View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0001496 | K18X001.00 SKB SWAN | SW | public | 2022-06-22 08:46 | 2024-07-11 13:48 |
| Reporter | (ALTech) Sangmin Choi | Assigned To | (ALTech) Sangmin Choi | Due Date | 2022-06-23 09:44 |
| Priority | normal | Severity | s4-minor | Reproducibility | N/A |
| Status | closed | Resolution | reopened | ||
| Summary | 0001496: Please build a test image. | ||||
| Description | Please build a test image. | ||||
| Tags | No tags attached. | ||||
| Attach Tags | |||||
| User List |
(ALTech) Sangmin Choi , |
|---|
|
|
|
|
|
Hi Sangmin, https://drive.google.com/file/d/1v1-Ijug6gPk491psla2TW2CiXJckJVXG/view?usp=sharing su getprop ro.vendor.vasott.version v534r07_nugu-20220622 |
|
|
Hi, Jason, Thank you for all support. |
|
|
Could you please build a test image? (SD only) Please apply this patch(0001-hls-1.5-2.patch). |
|
|
You don't need to apply NUGU apk. I want to keep this ticket to manage a test firmware. 0001-hls-1.5-2.patch (5,158 bytes)
From a9d0aa010ff6a10daf422347baa7bc7f72b64f6b Mon Sep 17 00:00:00 2001
From: Tony Kim <Tony.Kim@synaptics.com>
Date: Sat, 25 Jun 2022 04:16:04 +0900
Subject: [PATCH] hls 1.5 (2)
---
amp/src/ddl/comp_clk/source/clk_avsync.c | 65 ++++++++++++++++++++++++++++----
1 file changed, 57 insertions(+), 8 deletions(-)
diff --git a/amp/src/ddl/comp_clk/source/clk_avsync.c b/amp/src/ddl/comp_clk/source/clk_avsync.c
index a02f294..b8430ca 100755
--- a/amp/src/ddl/comp_clk/source/clk_avsync.c
+++ b/amp/src/ddl/comp_clk/source/clk_avsync.c
@@ -4289,6 +4289,8 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
BOOL fAllStreamsReady = TRUE;
SYNC_STREAM *pStream;
BOOL fAudioReady = FALSE;
+ BOOL fVideoReady = FALSE;
+ UINT32 uiVideoStrms = 0;
CLK_ASSERT(pSyncMgr);
@@ -4317,6 +4319,9 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
pStream->m_fReady = fReady;
}
+ if(pStream->m_eType == STREAM_TYPE_VIDEO)
+ uiVideoStrms++;
+
if (pStream->m_eType == STREAM_TYPE_AUDIO && fReady) {
if (!fAudioReady) {
fAudioReady = TRUE;
@@ -4325,6 +4330,11 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
AVSH("[AVS]Set start STC: 0x%llx", pSyncMgr->m_uiStartSTC);
}
}
+ else if (pStream->m_eType == STREAM_TYPE_VIDEO && fReady) {
+ AVSH("[AVS]Video Stream Ready");
+ if(!fVideoReady)
+ fVideoReady = TRUE;
+ }
if (fReady) {
fHasReadyStream = TRUE;
} else if (!fReady) {
@@ -4349,11 +4359,23 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
}
}
- if(fAudioReady) {
- if (!pSyncMgr->m_fAllStreamsReady) {
- AVSH("[AVS]Ready to kick off");
+ if(uiVideoStrms > 0) // Video(and Audio) are there (general case)
+ {
+ if(fAudioReady && fVideoReady) {
+ if (!pSyncMgr->m_fAllStreamsReady) {
+ AVSH("[AVS]Ready to kick off");
+ }
+ pSyncMgr->m_fAllStreamsReady = TRUE;
+ }
+ }
+ else // Audio only case.
+ {
+ if(fAudioReady) {
+ if (!pSyncMgr->m_fAllStreamsReady) {
+ AVSH("[AVS]Ready to kick off");
+ }
+ pSyncMgr->m_fAllStreamsReady = TRUE;
}
- pSyncMgr->m_fAllStreamsReady = fAudioReady;
}
return;
@@ -4391,6 +4413,9 @@ VOID sideband_check_avsync(AVSYNC_MGR *pSyncMgr)
}
+//#include <cutils/properties.h>
+//char hlstrickspeed[PROPERTY_VALUE_MAX] ={0,};
+
HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
SYNC_STREAM *pStream, AMP_BD_HANDLE hBD,
AMP_CLK_RND_INFO *pRndInfo,
@@ -4410,6 +4435,7 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
CLK_ASSERT(pDropInfo);
CLK_ASSERT(pSyncMgr->m_pAVClock);
+// property_get("sys.skb.hls.trickspeed", hlstrickspeed, "1.0");
eAct = AMP_CLK_DISP;
pBDInfo = stream_resync_to_bd(pStream, hBD);
@@ -4427,7 +4453,8 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
goto _Exit;
}
- if (pSyncMgr->m_eSyncStatus == SYNC_INIT) {
+ if (pSyncMgr->m_eSyncStatus == SYNC_INIT ||
+ (pSyncMgr->m_eSyncStatus == SYNC_LOCKING)) {
eAct = AMP_CLK_HOLD;
AVSH("[AVS]HOLD THE FRAME BEFORE START\n", __FUNCTION__);
goto _Exit;
@@ -4449,6 +4476,7 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
uiTime = AMP_GetCurrentTimeMS();
uiOrigSTC = GET_PTS_VAL64(avclock_get_stc64(pSyncMgr->m_pAVClock, TRUE));
+
uiSTC = uiOrigSTC + uiDelay;
if ((INT64)uiSTC >= pStream->m_iUsrDelay) {
uiSTC -= pStream->m_iUsrDelay;
@@ -4504,13 +4532,34 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
}
}
+// if(strncmp(hlstrickspeed, "1.5", 3)==0)
+ {
+
+ if (!pStream->m_uiPdnMode && pStream->m_fFirstSmpDisped &&
+ pSyncMgr->m_uiStcCnt4 == 6006 && pBDInfo->m_uiDurationCnt4 % 4 == 0) {
+ eAct = check_pts_range(pBDInfo->m_uiPtsStart, uiSTC, uiRangeL, uiRangeR,
+ pSyncMgr->m_fBackward);
+ if (eAct != AMP_CLK_DISP) {
+ uiRangeL = uiRangeR = pSyncMgr->m_uiStcCnt4 >> 2;
+ AVSI("[AVS] enlarge range to %d for action[%c] during consume redundancy\n",
+ uiRangeL, pszActChar[eAct]);
+ }
+ }
+ }
+
eAct = check_pts_range(pBDInfo->m_uiPtsStart, uiSTC, uiRangeL, uiRangeR,
pSyncMgr->m_fBackward);
- if ((eAct != AMP_CLK_DISP) && (pSyncMgr->m_iSyncAdjCnt == 1)) {
- eAct = AMP_CLK_DISP;
- pSyncMgr->m_iSyncAdjCnt = 0;
+#if 0
+ if(strncmp(hlstrickspeed, "1.5", 3))
+ {
+ if ((eAct != AMP_CLK_DISP) && (pSyncMgr->m_iSyncAdjCnt == 1)) {
+ eAct = AMP_CLK_DISP;
+ pSyncMgr->m_iSyncAdjCnt = 0;
+ }
}
+#endif
+
_Exit:
AVSU1("[AVS][%d]CHECK_%s([%c][%c] V:0x%08x(%d), M:0x%08x(%d)[%d], "
"AM:0x%08x, AM-V:%d)%s, usrdelay %d ms\n",
--
2.7.4
|
|
|
Hi Sangmin, https://drive.google.com/file/d/1ZjPFrsLeuUgl4D36b0zdSKKXYg1_8w3P/view?usp=sharing su getprop ro.vendor.vasott.version v534r09hls-20220630 |
|
|
Hi, Jason, Could you please build a test image one more? (SD only) Please clean all repository and apply below commit. https://bitbucket.skbroadband.com/projects/STBPAC/repos/skb_hlsplayer/commits/07a5a14582bdccea99a74bbe5b7b88b3f70f5b9f vendor/skb/prebuilts/skb_hlsplayer Thank you. |
|
|
There is a daily build image which I need. Please ignore my last request. Sorry for inconvenience. |
|
|
Hi Sanmin, The hlsPlayer (0.6.32) was committed yesterday. I think you can try the daily build first. |
|
|
Hi, Jason, Ok, I will check daily build first. And, I need one more test image for hls test. I missed one patch toady morning. Please apply attached patches and build a test image.(SD only) I have only SD STBs which is registered as HLS. So, please understand I should ask the test image. 0001-frameworks-av-increase_audio_input_buffer.patch (525 bytes)
diff --git a/media/codec2/sfplugin/CCodecBufferChannel.cpp b/media/codec2/sfplugin/CCodecBufferChannel.cpp
index 830829251..650317217 100644
--- a/media/codec2/sfplugin/CCodecBufferChannel.cpp
+++ b/media/codec2/sfplugin/CCodecBufferChannel.cpp
@@ -58,7 +58,7 @@ using CasStatus = hardware::cas::V1_0::Status;
namespace {
-constexpr size_t kSmoothnessFactor = 4;
+constexpr size_t kSmoothnessFactor = 20;
constexpr size_t kRenderingDepth = 3;
// This is for keeping IGBP's buffer dropping logic in legacy mode other
0001-hls-1.5-2-2.patch (5,158 bytes)
From a9d0aa010ff6a10daf422347baa7bc7f72b64f6b Mon Sep 17 00:00:00 2001
From: Tony Kim <Tony.Kim@synaptics.com>
Date: Sat, 25 Jun 2022 04:16:04 +0900
Subject: [PATCH] hls 1.5 (2)
---
amp/src/ddl/comp_clk/source/clk_avsync.c | 65 ++++++++++++++++++++++++++++----
1 file changed, 57 insertions(+), 8 deletions(-)
diff --git a/amp/src/ddl/comp_clk/source/clk_avsync.c b/amp/src/ddl/comp_clk/source/clk_avsync.c
index a02f294..b8430ca 100755
--- a/amp/src/ddl/comp_clk/source/clk_avsync.c
+++ b/amp/src/ddl/comp_clk/source/clk_avsync.c
@@ -4289,6 +4289,8 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
BOOL fAllStreamsReady = TRUE;
SYNC_STREAM *pStream;
BOOL fAudioReady = FALSE;
+ BOOL fVideoReady = FALSE;
+ UINT32 uiVideoStrms = 0;
CLK_ASSERT(pSyncMgr);
@@ -4317,6 +4319,9 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
pStream->m_fReady = fReady;
}
+ if(pStream->m_eType == STREAM_TYPE_VIDEO)
+ uiVideoStrms++;
+
if (pStream->m_eType == STREAM_TYPE_AUDIO && fReady) {
if (!fAudioReady) {
fAudioReady = TRUE;
@@ -4325,6 +4330,11 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
AVSH("[AVS]Set start STC: 0x%llx", pSyncMgr->m_uiStartSTC);
}
}
+ else if (pStream->m_eType == STREAM_TYPE_VIDEO && fReady) {
+ AVSH("[AVS]Video Stream Ready");
+ if(!fVideoReady)
+ fVideoReady = TRUE;
+ }
if (fReady) {
fHasReadyStream = TRUE;
} else if (!fReady) {
@@ -4349,11 +4359,23 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
}
}
- if(fAudioReady) {
- if (!pSyncMgr->m_fAllStreamsReady) {
- AVSH("[AVS]Ready to kick off");
+ if(uiVideoStrms > 0) // Video(and Audio) are there (general case)
+ {
+ if(fAudioReady && fVideoReady) {
+ if (!pSyncMgr->m_fAllStreamsReady) {
+ AVSH("[AVS]Ready to kick off");
+ }
+ pSyncMgr->m_fAllStreamsReady = TRUE;
+ }
+ }
+ else // Audio only case.
+ {
+ if(fAudioReady) {
+ if (!pSyncMgr->m_fAllStreamsReady) {
+ AVSH("[AVS]Ready to kick off");
+ }
+ pSyncMgr->m_fAllStreamsReady = TRUE;
}
- pSyncMgr->m_fAllStreamsReady = fAudioReady;
}
return;
@@ -4391,6 +4413,9 @@ VOID sideband_check_avsync(AVSYNC_MGR *pSyncMgr)
}
+//#include <cutils/properties.h>
+//char hlstrickspeed[PROPERTY_VALUE_MAX] ={0,};
+
HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
SYNC_STREAM *pStream, AMP_BD_HANDLE hBD,
AMP_CLK_RND_INFO *pRndInfo,
@@ -4410,6 +4435,7 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
CLK_ASSERT(pDropInfo);
CLK_ASSERT(pSyncMgr->m_pAVClock);
+// property_get("sys.skb.hls.trickspeed", hlstrickspeed, "1.0");
eAct = AMP_CLK_DISP;
pBDInfo = stream_resync_to_bd(pStream, hBD);
@@ -4427,7 +4453,8 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
goto _Exit;
}
- if (pSyncMgr->m_eSyncStatus == SYNC_INIT) {
+ if (pSyncMgr->m_eSyncStatus == SYNC_INIT ||
+ (pSyncMgr->m_eSyncStatus == SYNC_LOCKING)) {
eAct = AMP_CLK_HOLD;
AVSH("[AVS]HOLD THE FRAME BEFORE START\n", __FUNCTION__);
goto _Exit;
@@ -4449,6 +4476,7 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
uiTime = AMP_GetCurrentTimeMS();
uiOrigSTC = GET_PTS_VAL64(avclock_get_stc64(pSyncMgr->m_pAVClock, TRUE));
+
uiSTC = uiOrigSTC + uiDelay;
if ((INT64)uiSTC >= pStream->m_iUsrDelay) {
uiSTC -= pStream->m_iUsrDelay;
@@ -4504,13 +4532,34 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
}
}
+// if(strncmp(hlstrickspeed, "1.5", 3)==0)
+ {
+
+ if (!pStream->m_uiPdnMode && pStream->m_fFirstSmpDisped &&
+ pSyncMgr->m_uiStcCnt4 == 6006 && pBDInfo->m_uiDurationCnt4 % 4 == 0) {
+ eAct = check_pts_range(pBDInfo->m_uiPtsStart, uiSTC, uiRangeL, uiRangeR,
+ pSyncMgr->m_fBackward);
+ if (eAct != AMP_CLK_DISP) {
+ uiRangeL = uiRangeR = pSyncMgr->m_uiStcCnt4 >> 2;
+ AVSI("[AVS] enlarge range to %d for action[%c] during consume redundancy\n",
+ uiRangeL, pszActChar[eAct]);
+ }
+ }
+ }
+
eAct = check_pts_range(pBDInfo->m_uiPtsStart, uiSTC, uiRangeL, uiRangeR,
pSyncMgr->m_fBackward);
- if ((eAct != AMP_CLK_DISP) && (pSyncMgr->m_iSyncAdjCnt == 1)) {
- eAct = AMP_CLK_DISP;
- pSyncMgr->m_iSyncAdjCnt = 0;
+#if 0
+ if(strncmp(hlstrickspeed, "1.5", 3))
+ {
+ if ((eAct != AMP_CLK_DISP) && (pSyncMgr->m_iSyncAdjCnt == 1)) {
+ eAct = AMP_CLK_DISP;
+ pSyncMgr->m_iSyncAdjCnt = 0;
+ }
}
+#endif
+
_Exit:
AVSU1("[AVS][%d]CHECK_%s([%c][%c] V:0x%08x(%d), M:0x%08x(%d)[%d], "
"AM:0x%08x, AM-V:%d)%s, usrdelay %d ms\n",
--
2.7.4
|
|
|
Hi, Jason, Please ignore 0010276 comment. Please build a test image attached 3 patches. I want to appreciate your help. Thank you. 1124994_0001-SKB-MMCEI-9909-AHAL-PTS-delivery-for-DD-pass-throu.patch (973 bytes)
From 2385568e05a8c37ab0b428ff6d30c27fcd614586 Mon Sep 17 00:00:00 2001
From: Tony Kim <Tony.Kim@synaptics.com>
Date: Wed, 8 Jun 2022 21:26:42 +0900
Subject: [PATCH] [SKB][MMCEI-9909] AHAL PTS delivery for DD pass-throu
Change-Id: I9b6c9ff503c57ecad89d8fdc47a134e5b7489515
---
audio/AudioStreamTunnelOut.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/audio/AudioStreamTunnelOut.cpp b/audio/AudioStreamTunnelOut.cpp
index 6e3fb69..4117f47 100755
--- a/audio/AudioStreamTunnelOut.cpp
+++ b/audio/AudioStreamTunnelOut.cpp
@@ -1085,7 +1085,7 @@ void AudioStreamTunnelOut::parsePts(void **pData, int *datalength)
char* tmpPTShead = NULL;
index = mRemainDataLen;
- if (NULL == data || NULL == mPCMJoinData) {
+ if (NULL == data || (!mIsPassThru && NULL == mPCMJoinData)) {
MVLOGE("%s() line %d, Invalid data!!!, datalength %d.", __FUNCTION__, __LINE__, *datalength);
return;
}
--
2.7.4
0001-frameworks-av-increase_audio_input_buffer-2.patch (525 bytes)
diff --git a/media/codec2/sfplugin/CCodecBufferChannel.cpp b/media/codec2/sfplugin/CCodecBufferChannel.cpp
index 830829251..650317217 100644
--- a/media/codec2/sfplugin/CCodecBufferChannel.cpp
+++ b/media/codec2/sfplugin/CCodecBufferChannel.cpp
@@ -58,7 +58,7 @@ using CasStatus = hardware::cas::V1_0::Status;
namespace {
-constexpr size_t kSmoothnessFactor = 4;
+constexpr size_t kSmoothnessFactor = 20;
constexpr size_t kRenderingDepth = 3;
// This is for keeping IGBP's buffer dropping logic in legacy mode other
0001-hls-1.5-2-3.patch (5,158 bytes)
From a9d0aa010ff6a10daf422347baa7bc7f72b64f6b Mon Sep 17 00:00:00 2001
From: Tony Kim <Tony.Kim@synaptics.com>
Date: Sat, 25 Jun 2022 04:16:04 +0900
Subject: [PATCH] hls 1.5 (2)
---
amp/src/ddl/comp_clk/source/clk_avsync.c | 65 ++++++++++++++++++++++++++++----
1 file changed, 57 insertions(+), 8 deletions(-)
diff --git a/amp/src/ddl/comp_clk/source/clk_avsync.c b/amp/src/ddl/comp_clk/source/clk_avsync.c
index a02f294..b8430ca 100755
--- a/amp/src/ddl/comp_clk/source/clk_avsync.c
+++ b/amp/src/ddl/comp_clk/source/clk_avsync.c
@@ -4289,6 +4289,8 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
BOOL fAllStreamsReady = TRUE;
SYNC_STREAM *pStream;
BOOL fAudioReady = FALSE;
+ BOOL fVideoReady = FALSE;
+ UINT32 uiVideoStrms = 0;
CLK_ASSERT(pSyncMgr);
@@ -4317,6 +4319,9 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
pStream->m_fReady = fReady;
}
+ if(pStream->m_eType == STREAM_TYPE_VIDEO)
+ uiVideoStrms++;
+
if (pStream->m_eType == STREAM_TYPE_AUDIO && fReady) {
if (!fAudioReady) {
fAudioReady = TRUE;
@@ -4325,6 +4330,11 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
AVSH("[AVS]Set start STC: 0x%llx", pSyncMgr->m_uiStartSTC);
}
}
+ else if (pStream->m_eType == STREAM_TYPE_VIDEO && fReady) {
+ AVSH("[AVS]Video Stream Ready");
+ if(!fVideoReady)
+ fVideoReady = TRUE;
+ }
if (fReady) {
fHasReadyStream = TRUE;
} else if (!fReady) {
@@ -4349,11 +4359,23 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
}
}
- if(fAudioReady) {
- if (!pSyncMgr->m_fAllStreamsReady) {
- AVSH("[AVS]Ready to kick off");
+ if(uiVideoStrms > 0) // Video(and Audio) are there (general case)
+ {
+ if(fAudioReady && fVideoReady) {
+ if (!pSyncMgr->m_fAllStreamsReady) {
+ AVSH("[AVS]Ready to kick off");
+ }
+ pSyncMgr->m_fAllStreamsReady = TRUE;
+ }
+ }
+ else // Audio only case.
+ {
+ if(fAudioReady) {
+ if (!pSyncMgr->m_fAllStreamsReady) {
+ AVSH("[AVS]Ready to kick off");
+ }
+ pSyncMgr->m_fAllStreamsReady = TRUE;
}
- pSyncMgr->m_fAllStreamsReady = fAudioReady;
}
return;
@@ -4391,6 +4413,9 @@ VOID sideband_check_avsync(AVSYNC_MGR *pSyncMgr)
}
+//#include <cutils/properties.h>
+//char hlstrickspeed[PROPERTY_VALUE_MAX] ={0,};
+
HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
SYNC_STREAM *pStream, AMP_BD_HANDLE hBD,
AMP_CLK_RND_INFO *pRndInfo,
@@ -4410,6 +4435,7 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
CLK_ASSERT(pDropInfo);
CLK_ASSERT(pSyncMgr->m_pAVClock);
+// property_get("sys.skb.hls.trickspeed", hlstrickspeed, "1.0");
eAct = AMP_CLK_DISP;
pBDInfo = stream_resync_to_bd(pStream, hBD);
@@ -4427,7 +4453,8 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
goto _Exit;
}
- if (pSyncMgr->m_eSyncStatus == SYNC_INIT) {
+ if (pSyncMgr->m_eSyncStatus == SYNC_INIT ||
+ (pSyncMgr->m_eSyncStatus == SYNC_LOCKING)) {
eAct = AMP_CLK_HOLD;
AVSH("[AVS]HOLD THE FRAME BEFORE START\n", __FUNCTION__);
goto _Exit;
@@ -4449,6 +4476,7 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
uiTime = AMP_GetCurrentTimeMS();
uiOrigSTC = GET_PTS_VAL64(avclock_get_stc64(pSyncMgr->m_pAVClock, TRUE));
+
uiSTC = uiOrigSTC + uiDelay;
if ((INT64)uiSTC >= pStream->m_iUsrDelay) {
uiSTC -= pStream->m_iUsrDelay;
@@ -4504,13 +4532,34 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
}
}
+// if(strncmp(hlstrickspeed, "1.5", 3)==0)
+ {
+
+ if (!pStream->m_uiPdnMode && pStream->m_fFirstSmpDisped &&
+ pSyncMgr->m_uiStcCnt4 == 6006 && pBDInfo->m_uiDurationCnt4 % 4 == 0) {
+ eAct = check_pts_range(pBDInfo->m_uiPtsStart, uiSTC, uiRangeL, uiRangeR,
+ pSyncMgr->m_fBackward);
+ if (eAct != AMP_CLK_DISP) {
+ uiRangeL = uiRangeR = pSyncMgr->m_uiStcCnt4 >> 2;
+ AVSI("[AVS] enlarge range to %d for action[%c] during consume redundancy\n",
+ uiRangeL, pszActChar[eAct]);
+ }
+ }
+ }
+
eAct = check_pts_range(pBDInfo->m_uiPtsStart, uiSTC, uiRangeL, uiRangeR,
pSyncMgr->m_fBackward);
- if ((eAct != AMP_CLK_DISP) && (pSyncMgr->m_iSyncAdjCnt == 1)) {
- eAct = AMP_CLK_DISP;
- pSyncMgr->m_iSyncAdjCnt = 0;
+#if 0
+ if(strncmp(hlstrickspeed, "1.5", 3))
+ {
+ if ((eAct != AMP_CLK_DISP) && (pSyncMgr->m_iSyncAdjCnt == 1)) {
+ eAct = AMP_CLK_DISP;
+ pSyncMgr->m_iSyncAdjCnt = 0;
+ }
}
+#endif
+
_Exit:
AVSU1("[AVS][%d]CHECK_%s([%c][%c] V:0x%08x(%d), M:0x%08x(%d)[%d], "
"AM:0x%08x, AM-V:%d)%s, usrdelay %d ms\n",
--
2.7.4
|
|
|
Hi Sangmin, Please check your ftp /release_by_fxn/tmp/usb_bfx-ua300_V19.534.9_SD_hls2.zip su getprop ro.vendor.vasott.version v534r09hls2-20220630 Thanks Jason |
|
|
Hi, Jason, Could you please build a test image after apply following commits? You can find following commits in Smart3 UI 5.3.4 branch. 1. ======================================================================= pwd /home/smchoi/project/BFX-AT100/frameworks/av git log -1 commit 0f6f09901452a0e876def6ea32f16d7f87bc3b2c (HEAD -> develop, skb/BFX-AT100_5.3.4, m/BFX-AT100_5.3.4) Author: kerwin <kerwin.chen@fii-foxconn.com> Date: Tue Jul 12 08:40:31 2022 +0800 [BTVV-4467]: Add debug messages in MediaDrm server Change-Id: I6c6c4708eefa5ce17303e9cebfb174f760dcc2ec 2. ======================================================================= pwd /home/smchoi/project/BFX-AT100/vendor/widevine git log -1 commit 55462c8939fc00c413ccf5471891591ba7aa1633 (HEAD -> develop, skb/BFX-AT100_5.3.4, m/BFX-AT100_5.3.4) Author: kerwin <kerwin.chen@fii-foxconn.com> Date: Tue Jul 12 08:46:56 2022 +0800 [BTVV-4467]: Add debug messages in MediaDrm plugin Change-Id: I0889fc8b1f74e156d58bb749970251d96ab3ba37 Thank you. |
|
|
Hi Sangmin, Please check your ftp /release_by_fxn/tmp/usb_bfx-ua300_V19.534.11_SD_drm.zip su getprop ro.vendor.vasott.version v534r11drm-20220712 Thanks Jason |
|
|
Hi, Jason, Could you please build a test image after apply attached patch? (SD Only) Thank you. 0001-MMCEI-9962-AI2-47-AppleTV-FF-3X-and-1X-resume-issue-.patch (4,372 bytes)
From fef257e3b67ff6add7ffd30bb0e78680b6800184 Mon Sep 17 00:00:00 2001
From: Tony Kim <Tony.Kim@synaptics.com>
Date: Thu, 29 Jul 2022 06:07:24 +0900
Subject: [PATCH] [MMCEI-9962][AI2-47] AppleTV FF 3X and 1X resume issue -
timeout on resolution.
Change-Id: Id25be602d14eeca2231111f00bd313427bf84300
---
media/libstagefright/ACodec.cpp | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp
index 3ee7b3f..c3457e8 100644
--- a/media/libstagefright/ACodec.cpp
+++ b/media/libstagefright/ACodec.cpp
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-//#define LOG_NDEBUG 0
+#define LOG_NDEBUG 0
#define LOG_TAG "ACodec"
#ifdef __LP64__
@@ -1121,6 +1121,8 @@ status_t ACodec::configureOutputBuffersFromNativeWindow(
OMX_U32 *bufferCount, OMX_U32 *bufferSize,
OMX_U32 *minUndequeuedBuffers, bool preregister) {
+ ALOGD("[%s] configureOutputBuffersFromNativeWindow Enter\n", mComponentName.c_str());
+
OMX_PARAM_PORTDEFINITIONTYPE def;
InitOMXParams(&def);
def.nPortIndex = kPortIndexOutput;
@@ -1160,6 +1162,7 @@ status_t ACodec::configureOutputBuffersFromNativeWindow(
mNativeWindow.get(), NATIVE_WINDOW_MIN_UNDEQUEUED_BUFFERS,
(int *)minUndequeuedBuffers);
+ ALOGD("[%s] minUndequeuedBuffers:%u\n", mComponentName.c_str(), *minUndequeuedBuffers);
if (err != 0) {
ALOGE("NATIVE_WINDOW_MIN_UNDEQUEUED_BUFFERS query failed: %s (%d)",
strerror(-err), -err);
@@ -1209,6 +1212,7 @@ status_t ACodec::configureOutputBuffersFromNativeWindow(
*bufferCount = def.nBufferCountActual;
*bufferSize = def.nBufferSize;
+ ALOGD("[%s] configureOutputBuffersFromNativeWindow leave, bufferCount:%u, bufferSize:%u\n", mComponentName.c_str(), *bufferCount, *bufferSize);
return err;
}
@@ -1235,7 +1239,9 @@ status_t ACodec::allocateOutputBuffersFromNativeWindow() {
for (OMX_U32 i = 0; i < bufferCount; i++) {
ANativeWindowBuffer *buf;
int fenceFd;
+ ALOGV("[%s] [%d] dequeueBuffer begin", mComponentName.c_str(), i);
err = mNativeWindow->dequeueBuffer(mNativeWindow.get(), &buf, &fenceFd);
+ ALOGV("[%s] [%d] dequeueBuffer end", mComponentName.c_str(), i);
if (err != 0) {
ALOGE("dequeueBuffer failed: %s (%d)", strerror(-err), -err);
break;
@@ -8074,7 +8080,9 @@ bool ACodec::ExecutingState::onOMXEvent(
OMX_CommandPortDisable, kPortIndexOutput),
(status_t)OK);
+ ALOGD("[%s] free ANW buffer begin\n", mCodec->mComponentName.c_str());
mCodec->freeOutputBuffersNotOwnedByComponent();
+ ALOGD("[%s] free ANW buffer end\n", mCodec->mComponentName.c_str());
mCodec->changeState(mCodec->mOutputPortSettingsChangedState);
} else if (data2 != OMX_IndexConfigCommonOutputCrop
@@ -8183,10 +8191,13 @@ void ACodec::OutputPortSettingsChangedState::stateEntered() {
ALOGV("[%s] Now handling output port settings change",
mCodec->mComponentName.c_str());
- // If we haven't transitioned after 3 seconds, we're probably stuck.
+ // If we haven't transitioned after 10 seconds, we're probably stuck.
sp<AMessage> msg = new AMessage(ACodec::kWhatCheckIfStuck, mCodec);
msg->setInt32("generation", mCodec->mStateGeneration);
- msg->post(3000000);
+// msg->post(10000000);
+// msg->post(7000000);
+// msg->post(3000000);
+ msg->post(20000000);
}
bool ACodec::OutputPortSettingsChangedState::onOMXFrameRendered(
@@ -8227,7 +8238,9 @@ bool ACodec::OutputPortSettingsChangedState::onOMXEvent(
mCodec->mRenderTracker.clear(systemTime(CLOCK_MONOTONIC));
if (err == OK) {
+ ALOGD("[%s] allocateBuffersOnPort begin\n", mCodec->mComponentName.c_str());
err = mCodec->allocateBuffersOnPort(kPortIndexOutput);
+ ALOGD("[%s] allocateBuffersOnPort end\n", mCodec->mComponentName.c_str());
ALOGE_IF(err != OK, "Failed to allocate output port buffers after port "
"reconfiguration: (%d)", err);
mCodec->mCallback->onOutputBuffersChanged();
--
2.7.4
|
|
|
Hi Sangmin, Please check the following link, https://drive.google.com/file/d/17Zob-N-VHBg-k0vcp6l373z12x_hYbIl/view?usp=sharing su getprop ro.vendor.vasott.version v534r19apple-20220729 |
|
|
Hi, Jason, Could you please build a test image enable the Google Standard Launcher? (SD and ND) We have old image but need latest version. Thank you. |
|
|
Hi Sangmin, Please check the following folder /release_by_fxn/tmp/atv_launcher BFX-UA300:/ $ su BFX-UA300:/ # getprop ro.vendor.vasott.version v534r23launcher-20220804 Thanks, Jason |
|
|
Hi, Jason, Could you please build a test image attached 3 patches? (SD and ND) Thank you. 20220825_0001-hls-1.5-patch-1-1.patch (5,337 bytes)
From e60b3faf21f8c460c5f04e4a96b799a9a6ed0640 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=5B=EC=8B=9C=EB=83=85=ED=8B=B1=EC=8A=A4=5D=20=EB=B0=95?=
=?UTF-8?q?=EC=9E=AC=EB=AF=BC?= <kail.park@synaptics.com>
Date: Wed, 13 Jul 2022 21:40:22 +0900
Subject: [PATCH] hls 1.5 patch 1-1
Change-Id: Id6399c701d67994bd10bc180a3cd10301f0825b5
---
amp/src/ddl/comp_clk/source/clk_avsync.c | 66 ++++++++++++++++++++++++++++----
1 file changed, 58 insertions(+), 8 deletions(-)
diff --git a/amp/src/ddl/comp_clk/source/clk_avsync.c b/amp/src/ddl/comp_clk/source/clk_avsync.c
index 85cc75e..e14205b 100755
--- a/amp/src/ddl/comp_clk/source/clk_avsync.c
+++ b/amp/src/ddl/comp_clk/source/clk_avsync.c
@@ -4230,6 +4230,8 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
BOOL fAllStreamsReady = TRUE;
SYNC_STREAM *pStream;
BOOL fAudioReady = FALSE;
+ BOOL fVideoReady = FALSE;
+ UINT32 uiVideoStrms = 0;
CLK_ASSERT(pSyncMgr);
@@ -4258,6 +4260,9 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
pStream->m_fReady = fReady;
}
+ if(pStream->m_eType == STREAM_TYPE_VIDEO)
+ uiVideoStrms++;
+
if (pStream->m_eType == STREAM_TYPE_AUDIO && fReady) {
if (!fAudioReady) {
fAudioReady = TRUE;
@@ -4266,6 +4271,11 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
AVSH("[AVS]Set start STC: 0x%llx", pSyncMgr->m_uiStartSTC);
}
}
+ else if (pStream->m_eType == STREAM_TYPE_VIDEO && fReady) {
+ AVSH("[AVS]Video Stream Ready");
+ if(!fVideoReady)
+ fVideoReady = TRUE;
+ }
if (fReady) {
fHasReadyStream = TRUE;
} else if (!fReady) {
@@ -4290,11 +4300,24 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr)
}
}
- if(fAudioReady) {
- if (!pSyncMgr->m_fAllStreamsReady) {
- AVSH("[AVS]Ready to kick off");
+ if(uiVideoStrms > 0) // Video(and Audio) are there (general case)
+ {
+ //if(fAudioReady && fVideoReady) {
+ if(fAudioReady) {
+ if (!pSyncMgr->m_fAllStreamsReady) {
+ AVSH("[AVS]Ready to kick off");
+ }
+ pSyncMgr->m_fAllStreamsReady = TRUE;
+ }
+ }
+ else // Audio only case.
+ {
+ if(fAudioReady) {
+ if (!pSyncMgr->m_fAllStreamsReady) {
+ AVSH("[AVS]Ready to kick off");
+ }
+ pSyncMgr->m_fAllStreamsReady = TRUE;
}
- pSyncMgr->m_fAllStreamsReady = fAudioReady;
}
return;
@@ -4332,6 +4355,9 @@ VOID sideband_check_avsync(AVSYNC_MGR *pSyncMgr)
}
+//#include <cutils/properties.h>
+//char hlstrickspeed[PROPERTY_VALUE_MAX] ={0,};
+
HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
SYNC_STREAM *pStream, AMP_BD_HANDLE hBD,
AMP_CLK_RND_INFO *pRndInfo,
@@ -4351,6 +4377,7 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
CLK_ASSERT(pDropInfo);
CLK_ASSERT(pSyncMgr->m_pAVClock);
+// property_get("sys.skb.hls.trickspeed", hlstrickspeed, "1.0");
eAct = AMP_CLK_DISP;
pBDInfo = stream_resync_to_bd(pStream, hBD);
@@ -4368,7 +4395,8 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
goto _Exit;
}
- if (pSyncMgr->m_eSyncStatus == SYNC_INIT) {
+ if (pSyncMgr->m_eSyncStatus == SYNC_INIT ||
+ (pSyncMgr->m_eSyncStatus == SYNC_LOCKING)) {
eAct = AMP_CLK_HOLD;
AVSH("[AVS]HOLD THE FRAME BEFORE START\n", __FUNCTION__);
goto _Exit;
@@ -4390,6 +4418,7 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
uiTime = AMP_GetCurrentTimeMS();
uiOrigSTC = GET_PTS_VAL64(avclock_get_stc64(pSyncMgr->m_pAVClock, TRUE));
+
uiSTC = uiOrigSTC + uiDelay;
if ((INT64)uiSTC >= pStream->m_iUsrDelay) {
uiSTC -= pStream->m_iUsrDelay;
@@ -4445,13 +4474,34 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr,
}
}
+// if(strncmp(hlstrickspeed, "1.5", 3)==0)
+ {
+
+ if (!pStream->m_uiPdnMode && pStream->m_fFirstSmpDisped &&
+ pSyncMgr->m_uiStcCnt4 == 6006 && pBDInfo->m_uiDurationCnt4 % 4 == 0) {
+ eAct = check_pts_range(pBDInfo->m_uiPtsStart, uiSTC, uiRangeL, uiRangeR,
+ pSyncMgr->m_fBackward);
+ if (eAct != AMP_CLK_DISP) {
+ uiRangeL = uiRangeR = pSyncMgr->m_uiStcCnt4 >> 2;
+ AVSI("[AVS] enlarge range to %d for action[%c] during consume redundancy\n",
+ uiRangeL, pszActChar[eAct]);
+ }
+ }
+ }
+
eAct = check_pts_range(pBDInfo->m_uiPtsStart, uiSTC, uiRangeL, uiRangeR,
pSyncMgr->m_fBackward);
- if ((eAct != AMP_CLK_DISP) && (pSyncMgr->m_iSyncAdjCnt == 1)) {
- eAct = AMP_CLK_DISP;
- pSyncMgr->m_iSyncAdjCnt = 0;
+#if 0
+ if(strncmp(hlstrickspeed, "1.5", 3))
+ {
+ if ((eAct != AMP_CLK_DISP) && (pSyncMgr->m_iSyncAdjCnt == 1)) {
+ eAct = AMP_CLK_DISP;
+ pSyncMgr->m_iSyncAdjCnt = 0;
+ }
}
+#endif
+
_Exit:
AVSU1("[AVS][%d]CHECK_%s([%c][%c] V:0x%08x(%d), M:0x%08x(%d)[%d], "
"AM:0x%08x, AM-V:%d)%s, usrdelay %d ms\n",
--
2.7.4
20220825_0001-frameworks-av-increase_audio_input_buffer.patch (525 bytes)
diff --git a/media/codec2/sfplugin/CCodecBufferChannel.cpp b/media/codec2/sfplugin/CCodecBufferChannel.cpp
index 830829251..650317217 100644
--- a/media/codec2/sfplugin/CCodecBufferChannel.cpp
+++ b/media/codec2/sfplugin/CCodecBufferChannel.cpp
@@ -58,7 +58,7 @@ using CasStatus = hardware::cas::V1_0::Status;
namespace {
-constexpr size_t kSmoothnessFactor = 4;
+constexpr size_t kSmoothnessFactor = 20;
constexpr size_t kRenderingDepth = 3;
// This is for keeping IGBP's buffer dropping logic in legacy mode other
|
|
|
Hi Sangmin, Please check the following folder /release_by_fxn/tmp/0825_test_image BFX-UA300:/ $ su BFX-UA300:/ # getprop ro.vendor.vasott.version v534r27test-20220825 Thanks, Jason |
|
|
Hi, Jason, Could you please build two test images using attached patch? I'm sorry about frequent request, but I will visit LG to test urgent issue. Firmware #1(SD Only) - apply the enable_ampdiag_log.patch Firmware #2(SD Only) - apply the enable_ampdiag_log.patch - apply the ta binary, it's not ready yet, I will let you know by Wechat when it's ready. Could you please prepare the firmware #1 first? Thank you. enable_ampdiag_log.patch (402 bytes)
diff --git a/prebuilts/bin/init.vas.sh b/prebuilts/bin/init.vas.sh index 958d0f8..58517e2 100755 --- a/prebuilts/bin/init.vas.sh +++ b/prebuilts/bin/init.vas.sh @@ -22,6 +22,8 @@ echo "state 2 3" > /data/vendor/ledd_fifo # close AMP log messages, "ampdiag setmodl ALL 7" could reopen; samyang 20210412 ampdiag setmodl ALL 0 +ampdiag setmodl DISPSRV 255 +ampdiag setmodl VDEC 255 while true; do |
|
|
Hi, Dean, Please apply this libvpp.ta file to Firmware #2. Thank you. |
|
|
Hi Sangmin, Firmware #1 /release_by_fxn/swan_test_image/20220825_mantis1496/BFX-UA300_20220825_SD_v534r27_enable_ampdiag_log Firmware #2 /release_by_fxn/swan_test_image/20220825_mantis1496/BFX-UA300_20220825_SD_v534r27_enable_log_libvpp Thank you. Dean Chiang |
|
|
Hi, Jason, Could you please build a test image attached 4 patches? (SD and ND) Thank you. 0002-https-sc-debu-git.synaptics.com-gerrit-c-171604.patch (2,626 bytes)
From 0f6052c9aea628c0b2358e909258b3e190377556 Mon Sep 17 00:00:00 2001
From: Tony Kim <Tony.Kim@synaptics.com>
Date: Mon, 5 Sep 2022 14:45:54 +0900
Subject: [PATCH 2/4] https://sc-debu-git.synaptics.com/gerrit/#/c/171604/
Change-Id: Ic4dc80977dbf4de63c80f907a0dcc7a2136557b5
---
amp/src/service/display/src/disp_api.c | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/amp/src/service/display/src/disp_api.c b/amp/src/service/display/src/disp_api.c
index 640e40f..adb8bea 100755
--- a/amp/src/service/display/src/disp_api.c
+++ b/amp/src/service/display/src/disp_api.c
@@ -3220,6 +3220,8 @@ HRESULT DISP_VID_PushFrame(AMP_DISP_PLANE_ID uiPlaneId, VOID *handle, AMP_BD_ST
return Ret;
}
+ DISP_HIGH("handle:%p, uiPlaneId:%d, push pBD:%p\n", handle, uiPlaneId, pBD);
+
disp_status_update_push_bd(uiPlaneId);
pPlane = &(pDisp ->Plane[uiPlaneId]);
@@ -3229,12 +3231,13 @@ HRESULT DISP_VID_PushFrame(AMP_DISP_PLANE_ID uiPlaneId, VOID *handle, AMP_BD_ST
} else {
Ret = AMP_BD_Map(AMP_BD_GET_BDID(pBD), &hBD);
if ((Ret != SUCCESS) || !hBD) {
- DISP_ERROR("AMP_BD_Map fails, error code [%x]!", Ret);
+ DISP_ERROR("AMP_BD_Map fails, error code [%x]!\n", Ret);
goto Disp_PushFrame_Exit0;
}
+ DISP_HIGH("handle:%p, uiPlaneId:%d, ref hBD:%p\n", handle, uiPlaneId, hBD);
Ret = AMP_BD_Ref(hBD);
if (Ret != SUCCESS) {
- DISP_ERROR("AMP_BD_Ref fails, error code [%x]!", Ret);
+ DISP_ERROR("AMP_BD_Ref fails, error code [%x]!\n", Ret);
goto Disp_PushFrame_Exit1;
}
}
@@ -3393,6 +3396,17 @@ HRESULT DISP_VID_PopFrame(AMP_DISP_PLANE_ID uiPlaneId, VOID *handle, AMP_BD_HAND
}
}
+ BOOL bValid = FALSE;
+ UINT32 uiRefCnt = 0;
+ Ret = AMP_BD_GetStatus(hBD, &bValid, &uiRefCnt);
+ if (Ret != SUCCESS || !bValid || uiRefCnt == 1) {
+ DISP_ERROR("BD exception, AMP_BD_GetStatus hBD:%p ret=0x%x, valid:%d, "
+ "refCnt:%d, handle:%p, uiPlaneId:%d\n", hBD, Ret, bValid,
+ uiRefCnt, handle, uiPlaneId);
+ Ret = ERR_SWMODEWRONG;
+ goto Disp_PopFrame_Exit;
+ }
+
Ret = AMP_BD_Unref(hBD);
if (Ret != SUCCESS) {
DISP_ERROR("AMP_BD_Unref fails, error code [%x]!", Ret);
@@ -3405,6 +3419,7 @@ HRESULT DISP_VID_PopFrame(AMP_DISP_PLANE_ID uiPlaneId, VOID *handle, AMP_BD_HAND
goto Disp_PopFrame_Exit;
}
+ DISP_HIGH("pop hBD:%p, handle:%p, uiPlaneId:%d\n", hBD, handle, uiPlaneId);
Disp_PopFrame_Exit:
return Ret;
}
--
2.7.4
0001-https-sc-debu-git.synaptics.com-gerrit-c-162747.patch (1,147 bytes)
From 4901b7d49a891d9fba0755cb076f9219fa806bed Mon Sep 17 00:00:00 2001
From: Tony Kim <Tony.Kim@synaptics.com>
Date: Mon, 5 Sep 2022 14:39:55 +0900
Subject: [PATCH 1/4] https://sc-debu-git.synaptics.com/gerrit/#/c/162747/
Change-Id: I9753ada3b4b4a78e46fbf2693ecaa47da43e9349
---
amp/src/ddl/vcodec/comp_vdec/source/internal_vdec_api.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/amp/src/ddl/vcodec/comp_vdec/source/internal_vdec_api.c b/amp/src/ddl/vcodec/comp_vdec/source/internal_vdec_api.c
index 2351249..49c68f6 100755
--- a/amp/src/ddl/vcodec/comp_vdec/source/internal_vdec_api.c
+++ b/amp/src/ddl/vcodec/comp_vdec/source/internal_vdec_api.c
@@ -4398,7 +4398,7 @@ static HRESULT return_str_buf(VDecoder *pVDec) {
AMP_BDCHAIN_PeekItem(pVDec->pvMetaBufQueue, 0, &hBDInChecking);
ret = BDTagGetVMetaDesc(hBDInChecking, &pVmetaDescTag);
- AMP_ASSERT(ret == SUCCESS);
+ //AMP_ASSERT(ret == SUCCESS);
if (ret != SUCCESS) {
VDEC_LOGE("%p: hBD=%p don't have vmeta desc ret=%x",
pVDec, hBDInChecking, ret);
--
2.7.4
0004-https-sc-debu-git.synaptics.com-gerrit-c-171604-2.patch (7,692 bytes)
From d36ea0b01af64bd56755835334e13673b0f8d9aa Mon Sep 17 00:00:00 2001
From: Tony Kim <Tony.Kim@synaptics.com>
Date: Mon, 5 Sep 2022 17:12:30 +0900
Subject: [PATCH 4/4] https://sc-debu-git.synaptics.com/gerrit/#/c/171604/2
Change-Id: Ic8fd170b2fb124fb6170148f6374ee9fcc8a86ea
---
amp/src/service/display/src/disp_api.c | 22 ++++++++++++++--------
amp/src/service/display/src/disp_prv.c | 16 +++++++++++++---
2 files changed, 27 insertions(+), 11 deletions(-)
diff --git a/amp/src/service/display/src/disp_api.c b/amp/src/service/display/src/disp_api.c
index adb8bea..6e94f1e 100755
--- a/amp/src/service/display/src/disp_api.c
+++ b/amp/src/service/display/src/disp_api.c
@@ -2874,7 +2874,7 @@ HRESULT DISP_DEINT_ReturnInBDFn(void *pInst, AMP_BD_HANDLE hInBD)
{
DISP_PLANE *pPlane = (DISP_PLANE *)pInst;
HRESULT ret = SUCCESS;
- DISP_INFO("return Input BD from DEINT pPlane=%p hBD=%p to pOutputQue",
+ DISP_HIGH("return Input BD from DEINT pPlane=%p hBD=%p to pOutputQue\n",
pPlane, hInBD);
ret = AMP_BDCHAIN_PushItem(pPlane->pOutputQue, hInBD);
ASSERT_RET_SHOW(ret, "AMP_BDCHAIN_PushItem outputQ=%p BD=%p ret=%x\n",
@@ -3061,6 +3061,7 @@ HRESULT DISP_DEINT_recy_OutBD(DISP_PLANE *pPlane, AMP_BD_HANDLE hBD)
{
HRESULT ret = SUCCESS;
if (!isInBDChain(pPlane->pDEINTDispBDQ, hBD)) {
+ DISP_HIGH("pPlane:%p, push hBD:%p\n", pPlane, hBD);
ret = AMP_BDCHAIN_PushItem(pPlane->pOutputQue, hBD);
ASSERT_RET_SHOW(ret, "push item output que hBD=%p", hBD);
return ret;
@@ -3260,6 +3261,7 @@ HRESULT DISP_VID_PushFrame(AMP_DISP_PLANE_ID uiPlaneId, VOID *handle, AMP_BD_ST
#ifndef VPP_ENABLE_VPP_TA_IN_QUIESCENT_MODE
if(g_quiescentMode)
{ //Re-cycle immediately if VPP_TA is not present in quiescent mode
+ DISP_HIGH("uiPlaneId:%d, push hBD:%p\n", uiPlaneId, hBD);
Ret = AMP_BDCHAIN_PushItem(pPlane->pOutputQue, hBD);
if (Ret != SUCCESS) {
DISP_ERROR("DISP_DEINT_PushFrame fails, error code [%x]!", Ret);
@@ -3359,7 +3361,7 @@ HRESULT DISP_VID_PopFrame(AMP_DISP_PLANE_ID uiPlaneId, VOID *handle, AMP_BD_HAND
}
if (isTagPath(hBD, handle)) {
- DISP_MID("find BD=%p from handle=%p", hBD, handle);
+ DISP_HIGH("find BD=%p from handle=%p\n", hBD, handle);
/* set frame status to displayed */
Ret = BD_GetFrameInfo(hBD, &pFrameInfo);
@@ -3383,10 +3385,10 @@ HRESULT DISP_VID_PopFrame(AMP_DISP_PLANE_ID uiPlaneId, VOID *handle, AMP_BD_HAND
to unused before deleting the item from o/p queue*/
if (is_last_frame(hBD)) {
if(gVPPMapTable.vpp_plane_map[uiPlaneId].is_video) {
- DISP_HIGH("free last frame here!!!");
+ DISP_HIGH("free last frame here!!!\n");
video_plane_ref_bd(uiPlaneId, hBD, FALSE);
}
- DISP_HIGH("Clearing the status of built-in frame of type REPEAT_LAST_FRAME");
+ DISP_HIGH("Clearing the status of built-in frame of type REPEAT_LAST_FRAME\n");
disp_last_frame_recycle(uiPlaneId);
}
Ret = AMP_BDCHAIN_DeleteItem(pPlane->pOutputQue, hBD);
@@ -3401,21 +3403,21 @@ HRESULT DISP_VID_PopFrame(AMP_DISP_PLANE_ID uiPlaneId, VOID *handle, AMP_BD_HAND
Ret = AMP_BD_GetStatus(hBD, &bValid, &uiRefCnt);
if (Ret != SUCCESS || !bValid || uiRefCnt == 1) {
DISP_ERROR("BD exception, AMP_BD_GetStatus hBD:%p ret=0x%x, valid:%d, "
- "refCnt:%d, handle:%p, uiPlaneId:%d\n", hBD, Ret, bValid,
- uiRefCnt, handle, uiPlaneId);
+ "refCnt:%d, handle:%p, uiPlaneId:%d, *pBD:%p\n", hBD, Ret, bValid,
+ uiRefCnt, handle, uiPlaneId, *pBD);
Ret = ERR_SWMODEWRONG;
goto Disp_PopFrame_Exit;
}
Ret = AMP_BD_Unref(hBD);
if (Ret != SUCCESS) {
- DISP_ERROR("AMP_BD_Unref fails, error code [%x]!", Ret);
+ DISP_ERROR("AMP_BD_Unref fails, error code [%x]!\n", Ret);
goto Disp_PopFrame_Exit;
}
Ret = AMP_BD_Unmap(hBD);
if (Ret != SUCCESS) {
- DISP_ERROR("AMP_BD_Unmap fails, hBD=%p error code [%x]!", hBD, Ret);
+ DISP_ERROR("AMP_BD_Unmap fails, hBD=%p error code [%x]!\n", hBD, Ret);
goto Disp_PopFrame_Exit;
}
@@ -5626,6 +5628,10 @@ HRESULT DISP_GFX_PushBD(AMP_DISP_PLANE_ID uiPlaneId, AMP_BD_ST *hBD)
if(g_quiescentMode)
{ //Re-cycle immediately if VPP_TA is not present in quiescent mode
pFrameInfo->uStatus = AMP_FRAME_ST_DISPLAYED;
+
+ if (uiPlaneId == AMP_DISP_PLANE_MAIN) {
+ DISP_HIGH("uiPlaneId:%d, push hBD:%p\n", uiPlaneId, hBD);
+ }
Ret = AMP_BDCHAIN_PushItem(pPlane->pOutputQue, hBD);
GFX_STATUS_BROADCAST();
return Ret;
diff --git a/amp/src/service/display/src/disp_prv.c b/amp/src/service/display/src/disp_prv.c
index ea13f6c..5ef14b0 100755
--- a/amp/src/service/display/src/disp_prv.c
+++ b/amp/src/service/display/src/disp_prv.c
@@ -955,7 +955,7 @@ HRESULT bdchain_move_items(DISP_PLANE *pPlane, AMP_BDCHAIN *pChainIn,
else
#endif
{
- DISP_INFO("move BD=%p %p -> %p",
+ DISP_HIGH("move BD=%p %p -> %p",
pFrame, pChainIn, pChainOut);
Ret = AMP_BDCHAIN_PushItem(pChainOut, pFrame);
@@ -2698,6 +2698,9 @@ VOID disp_callback_isr(VOID)
/* after push new frame, pervious BD is still displaying
and will be recycled in next V sync */
if (pPlane->LastBD) {
+ if (PlaneId == AMP_DISP_PLANE_MAIN) {
+ DISP_HIGH("PlaneId:%d, push hBD:%p\n", PlaneId, pPlane->LastBD);
+ }
Ret = AMP_BDCHAIN_PushItem(pPlane->pOutputQue, pPlane->LastBD);
if (Ret != SUCCESS) {
DISP_ERROR("Push to pOutputQue hBD=%p fail ret=%x",
@@ -2710,9 +2713,12 @@ VOID disp_callback_isr(VOID)
/* current BD is build in frame, recycle it here */
if (pPlane->pCurrentDisp == pPlane->pDefaultLogo) {
if (pPlane->CurrentBD) {
+ if (PlaneId == AMP_DISP_PLANE_MAIN) {
+ DISP_HIGH("PlaneId:%d, push hBD:%p\n", PlaneId, pPlane->CurrentBD);
+ }
Ret = AMP_BDCHAIN_PushItem(pPlane->pOutputQue, pPlane->CurrentBD);
if (Ret != SUCCESS) {
- DISP_ERROR("Push to pOutputQue hBD=%p fail ret=%x",
+ DISP_ERROR("Push to pOutputQue hBD=%p fail ret=%x\n",
pPlane->CurrentBD,
Ret);
}
@@ -2795,9 +2801,13 @@ VOID disp_callback_isr_end(VOID)
if ((Ret != SUCCESS)||(!pFrameInfo))
DISP_ERROR(" BD_GetFrameInfo fails, BD:0x%x\n", hBD);
+ if (PlaneId == AMP_DISP_PLANE_MAIN) {
+ DISP_HIGH("PlaneId:%d, push hBD:%p\n", PlaneId, hBD);
+ }
+
Ret = AMP_BDCHAIN_PushItem(pPlane->pOutputQue, hBD);
if (Ret != SUCCESS)
- DISP_ERROR("Push to pOutputQue hBD=%p fail ret=%x", hBD, Ret);
+ DISP_ERROR("Push to pOutputQue hBD=%p fail ret=%x\n", hBD, Ret);
}
}
if(gVPPMapTable.vpp_plane_map[PlaneId].is_video) {
--
2.7.4
0003-empty_bd_pool-crash.patch (1,648 bytes)
From b2b7abfcd9204142fd720a42b236cbc999f7f547 Mon Sep 17 00:00:00 2001
From: Tony Kim <Tony.Kim@synaptics.com>
Date: Mon, 5 Sep 2022 15:33:21 +0900
Subject: [PATCH 3/4] empty_bd_pool crash
Change-Id: Iadfedf188b151855a18c2455dbc104b728fc84ef
---
amp/src/ddl/vcodec/comp_vdec/source/ddl_vdec.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/amp/src/ddl/vcodec/comp_vdec/source/ddl_vdec.c b/amp/src/ddl/vcodec/comp_vdec/source/ddl_vdec.c
index 9b3b0b1..e3828e6 100755
--- a/amp/src/ddl/vcodec/comp_vdec/source/ddl_vdec.c
+++ b/amp/src/ddl/vcodec/comp_vdec/source/ddl_vdec.c
@@ -774,9 +774,17 @@ static HRESULT empty_bd_pool(VDEC_HLD* pHld) {
for(i = 0; i < pHld->uDispBDPoolSize; i++){
rc = AMP_BDCHAIN_PopItem(pHld->pDispBDPoolQ, &hBD);
if(rc == SUCCESS) {
- VDEC_LOGM(VDECBD"pHld=%p free disp hBD=%p bdid=%d",
- pHld, hBD, AMP_BD_GET_BDID(hBD));
- AMP_BD_Free(hBD);
+ HRESULT Ret = SUCCESS;
+ BOOL bValid = FALSE;
+ UINT32 uiRefCnt = 0;
+ Ret = AMP_BD_GetStatus(hBD, &bValid, &uiRefCnt);
+ if(Ret != SUCCESS || !bValid || (hBD == pHld->hLastBD)){
+ VDEC_LOGH(VDECBD"Exception in empty_bd_pool() hBD [%p] Ret[%d] bValid[%d] uiRefCnt[%d] \n", hBD, Ret, bValid, uiRefCnt);
+ } else {
+ VDEC_LOGM(VDECBD"pHld=%p free disp hBD=%p bdid=%d",
+ pHld, hBD, AMP_BD_GET_BDID(hBD));
+ AMP_BD_Free(hBD);
+ }
} else {
VDEC_LOGH("pHld=%p Pop BD error", pHld);
break;
--
2.7.4
|
|
|
Hi Sangmin, Upload OK. /release_by_fxn/swan_test_image/20220906_mantis1496 Thank you. Dean Chiang |
|
|
Hi, Dean, Could you please build a test image after remove following commit(SD and ND)? vendor/synaptics/vssxx commit fd5ceac09d614f466f789c81bcb1cd3c0be902ff Author: Tony Kim <Tony.Kim@synaptics.com> Date: Wed Feb 16 21:57:35 2022 +0900 Flush pcm from audioHal when HDMI is in RAW format Thank you. |
|
|
Hi, Dean, And, please build a test image one more with attached patches. Thank you. |
|
|
Hi Sangmin, Upload ok. for developer 0001496:0010846: /release_by_fxn/swan_test_image/20220914_mantis1496 for developer 0001496:0010848 /release_by_fxn/swan_test_image/20220912_mantis1496 Thank you. Dean Chiang |
|
|
Hi, Dean, Could you please build a test image enable the Google Standard Launcher? (ND, SD, SU) We got the ND and SD images before, but SU image is also needed. Because Disney Plus is only searchable under user build image. It's enough to get SU image only, but I want to get all images - ND, SD, SU. If there is any situation to debug, it's hard to checking with only SU image. Thank you. |
|
|
Hi Sangmin, Upload ok. /release_by_fxn/swan_test_image/20220923_mantis1496 Thank you. Dean Chiang |
|
|
Hi, Dean, As I told you yesterday, the firmware which is applied Google Standard Launcher has below problem. - When I press the front power button, the BTV Launcher is launched. Could you please fix this issue? I want to operate the STB with Google Standard Launcher only. Thank you. |
|
|
Hi Sangmin, Upload ok. /release_by_fxn/swan_test_image/20220926_mantis1496 Thank you. Dean Chiang |
|
|
Hi, Dean, Could you please build a test image with attached patch? (SD and ND) Thank you. 7fe1241.diff (1,322 bytes)
From 7fe1241544eb6a2caa7dee06006f0a4f6d1412cc Mon Sep 17 00:00:00 2001
From: Zhiliang Wang <Zhiliang.Wang@synaptics.com>
Date: Thu, 11 Mar 2021 18:15:24 +0800
Subject: [PATCH] AMP: DMX: refine the logic of pushBuff for Eos case
after Eos event, it needs to sync output buffer before
pushing es buffer in case the residue data is missed
Jira : https://synaextjira.atlassian.net/browse/LGUG-359
Cherry pick from https://sc-debu-git.synaptics.com/gerrit/#/c/150230/
Change-Id: Ifb19b8cb916edce9970675b57bb3853c23a45805
Reviewed-on: https://sc-debu-git.synaptics.com/gerrit/150230
Reviewed-by: Lingfeng Mao <Lingfeng.Mao@synaptics.com>
Reviewed-on: https://sc-debu-git.synaptics.com/gerrit/172159
Reviewed-by: Tony Kim <Tony.Kim@synaptics.com>
---
diff --git a/amp/src/ddl/dmx/comp/core/src/dmx_strm_es.c b/amp/src/ddl/dmx/comp/core/src/dmx_strm_es.c
index eef3dd0..1dca7c9 100755
--- a/amp/src/ddl/dmx/comp/core/src/dmx_strm_es.c
+++ b/amp/src/ddl/dmx/comp/core/src/dmx_strm_es.c
@@ -2248,6 +2248,8 @@
Eos = internal_IsEos(pStrm, -1);
if(Eos == TRUE) {
DMX_HIGH("NPM:Strm[%d] EOS Ctrl arrives\n",pStrm->uiStrmId);
+ /* after EOS event, it needs to sync output to get all the data*/
+ DMX_Stream_SyncOutput(pStrm);
}
uNewCome = pStrm->uiOutDataCnt - pStream->uPushedDataCnt;
|
|
|
Hi Sangmin, Upload ok. /release_by_fxn/swan_test_image/20221006_mantis1496 Thank you. Dean Chiang |
|
|
Hi, Dean, Could you please build a test image with attached patch? (SD and ND) Thank you. 0001-MMCEI-9987-congested-vbi-interrupt-filtering-2.patch (1,959 bytes)
From e50919239f94082182e6e0d6fa2dd2cd253bd718 Mon Sep 17 00:00:00 2001
From: Tony Kim <Tony.Kim@synaptics.com>
Date: Wed, 12 Oct 2022 14:47:57 +0900
Subject: [PATCH] [MMCEI-9987] congested vbi interrupt filtering (2)
Change-Id: Ic28f13d36d69ba3ce448a454b10b27aed4e83285
---
amp/src/hal/vpp/g4_hdr/ca_wrapper/source/vpp_api_tz.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/amp/src/hal/vpp/g4_hdr/ca_wrapper/source/vpp_api_tz.c b/amp/src/hal/vpp/g4_hdr/ca_wrapper/source/vpp_api_tz.c
index 2cd572c..0889acd 100644
--- a/amp/src/hal/vpp/g4_hdr/ca_wrapper/source/vpp_api_tz.c
+++ b/amp/src/hal/vpp/g4_hdr/ca_wrapper/source/vpp_api_tz.c
@@ -112,6 +112,7 @@ int VPP_Suspend_request = 0;
int VPP_Exit_Flag = 0;
int VPP_isr_task_exited = 0;
+static int VPP_playback_started = 0;
/* Static functions */
static HRESULT VPP_ISR_GetMsg(MV_CC_MSG_t * pMsg)
{
@@ -160,7 +161,8 @@ static VOID VPP_ISR_Task(VOID)
vbiDrop = 0;
if (isVBIIntr(msg.m_Param1)){
timeDiff = VPPDRV_vppIntrFreqMonitorGen(VPPDRV_CA_VPPOBJ, VPPDRV_INTR_MONITOR_UINT0_VBI_INTR, VPPDRV_INTR_MONITOR_START, VPPDRV_INTR_MONITOR_NOSHOW);
- if (timeDiff < VPP_MIN_ALLOWED_SCHEDULE_DELAY) {
+ //Allow dropping only after playback is started
+ if (VPP_playback_started && timeDiff < VPP_MIN_ALLOWED_SCHEDULE_DELAY) {
//bCLR_VBI_INTR(msg.m_Param1);
vbiDrop = 1;
printf("%s:%d: Drop VBI interrupt : %x\n", __func__, __LINE__, timeDiff);
@@ -1099,6 +1101,9 @@ INT MV_VPPOBJ_DisplayFrame(INT handle, INT planeID, VOID *frame)
pDesc = (VDEC_VID_BUF_DESC *)frame;
pVBufInfo = pDesc->user_data;
pVBufInfo->m_hDesc = (UINT32)frame;
+ if (!pVBufInfo->builtinFrame) {
+ VPP_playback_started = 1;
+ }
#if 1
if(pVBufInfo->m_dv_present_mode == VPP_DOLBY_PRESENT_BL_EL_METADATA)
{
--
2.7.4
|
|
|
Hi Sangmin, Upload ok. /release_by_fxn/swan_test_image/20221014_mantis1496 Thank you. Dean Chiang |
|
|
Hi, Dean, Could you please build a test image with following branch? (SD and ND) path : vendor/synaptics/btv-hal-impl/synaptics branch : soc-syna/BTF_API_LEVEL_6/bg5ct/ua300_BTVV-4766 $ cd vendor/synaptics/btv-hal-impl/synaptics $ git log -1 commit d3d729bb3fbe42368a808163d1a2aac32360a579 (HEAD -> ua300_BTVV-4766, soc-syna/BTF_API_LEVEL_6/bg5ct/ua300_BTVV-4766) Author: kim gwang sung <jung2604@sptek.co.kr> Date: Wed Nov 9 12:00:56 2022 +0900 [BTVV-4766] AI2/AI Sound MAX 업데이트 이후 채널 이동 시 순간 잡음 발생 - 시냅틱스 가이드 패치 적용 Thank you. |
|
|
Hi Sangmin, Please check the following folder of your FTP release_by_fxn/tmp/BTVV-4766 Thanks, Jason |
|
|
Hi, Dean, Could you please build a test image with attached patch? (SD and ND) Thank you. 1274333_0001-PATCH-MMCEI-9987-congested-vbi-interrupt-filtering-3.patch (2,918 bytes)
From bc9ce81318cd8c2b364cc1e16e6fe7de5f94b713 Mon Sep 17 00:00:00 2001
From: Tony Kim <Tony.Kim@synaptics.com>
Date: Fri, 11 Nov 2022 17:06:55 +0900
Subject: [PATCH] [PATCH] [MMCEI-9987] congested vbi interrupt filtering (3)
Change-Id: I652b6d64efa7b8f854c1ad77e17e1f538445a86a
---
amp/src/hal/vpp/g4_hdr/ca_wrapper/source/vpp_api_tz.c | 6 +++++-
amp/src/service/display/src/disp_prv.c | 12 ++++++++++++
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/amp/src/hal/vpp/g4_hdr/ca_wrapper/source/vpp_api_tz.c b/amp/src/hal/vpp/g4_hdr/ca_wrapper/source/vpp_api_tz.c
index 0889acd..b8b2505 100644
--- a/amp/src/hal/vpp/g4_hdr/ca_wrapper/source/vpp_api_tz.c
+++ b/amp/src/hal/vpp/g4_hdr/ca_wrapper/source/vpp_api_tz.c
@@ -480,6 +480,7 @@ INT MV_VPPOBJ_Suspend(INT handle, BOOL optimize)
VPP_LOG("%s \n", __FUNCTION__);
Ret = VppSuspend(optimize);
+ VPP_playback_started = 0; //toto add
return (Ret);
}
@@ -1087,6 +1088,9 @@ INT MV_VPPOBJ_EarlyDisplayFrame(INT handle, INT planeID, VOID *frame)
* MV_EUNCONFIG - VPP not configured or plane not active
* MV_EFRAMEQFULL - frame queue is full
*******************************************************************/
+ int g_last_video_plane_dst_x =0;
+ int g_last_video_plane_dst_y =0;
+
INT MV_VPPOBJ_DisplayFrame(INT handle, INT planeID, VOID *frame)
{
VDEC_VID_BUF_DESC *pDesc;
@@ -1101,7 +1105,7 @@ INT MV_VPPOBJ_DisplayFrame(INT handle, INT planeID, VOID *frame)
pDesc = (VDEC_VID_BUF_DESC *)frame;
pVBufInfo = pDesc->user_data;
pVBufInfo->m_hDesc = (UINT32)frame;
- if (!pVBufInfo->builtinFrame) {
+ if (!pVBufInfo->builtinFrame && g_last_video_plane_dst_x && g_last_video_plane_dst_y ) {
VPP_playback_started = 1;
}
#if 1
diff --git a/amp/src/service/display/src/disp_prv.c b/amp/src/service/display/src/disp_prv.c
index 5ef14b0..7760f0a 100755
--- a/amp/src/service/display/src/disp_prv.c
+++ b/amp/src/service/display/src/disp_prv.c
@@ -1556,6 +1556,8 @@ video_setscale_ratioctrl_exit:
return Ret;
}
+ extern int g_last_video_plane_dst_x;
+ extern int g_last_video_plane_dst_y;
VOID set_scale_handler(DISP_PLANE *pPlane, MV_CC_MSG_t *pMsg)
{
BOOL DstInvalid = FALSE;
@@ -1625,6 +1627,16 @@ VOID set_scale_handler(DISP_PLANE *pPlane, MV_CC_MSG_t *pMsg)
pPlane->DesiredWins.dst.x, pPlane->DesiredWins.dst.y,
pPlane->DesiredWins.dst.width, pPlane->DesiredWins.dst.height,
pPlane->ScalingMode);
+
+ DISP_MODULE *pDisp;
+ pDisp = gDispModule;
+
+ if (pPlane == &(pDisp->Plane[AMP_DISP_PLANE_MAIN]) )
+ {
+ //store the last scaling param for main video
+ g_last_video_plane_dst_x = pPlane->DesiredWins.dst.x;
+ g_last_video_plane_dst_y = pPlane->DesiredWins.dst.y;
+ }
AmpFree(pScalingWins);
}
--
2.7.4 |
|
|
Hi Sangmin, Upload ok. /release_by_fxn/swan_test_image/2022116_mantis1496 Thank you. Dean Chiang |
|
|
Hi, Dean, Could you please build a test image with attached patch? (SD and SU) Thank you. 0001-remove_zram_swap_file.patch (866 bytes)
diff --git a/fstab.a.sequoia.29 b/fstab.a.sequoia.29 index 88cf29d..409904a 100644 --- a/fstab.a.sequoia.29 +++ b/fstab.a.sequoia.29 @@ -19,4 +19,4 @@ product /product ext4 ro,barrier=1 wait,av /devices/platform/soc/f7ed0000.usb* auto auto defaults voldmanaged=usb:auto,encryptable=userdata /devices/platform/soc/f7ab0000.sdhci/mmc_host/mmc1/mmc* auto auto defaults voldmanaged=sdcard:auto,encryptable=userdata -/dev/block/zram0 none swap defaults zramsize=1073741824,max_comp_streams=4,zram_loopback_path=/data/unencrypted/zram_swap,zram_loopback_size=512M +/dev/block/zram0 none swap defaults zramsize=1073741824,max_comp_streams=4 |
|
|
Hi Sangmin, Upload ok. /release_by_fxn/swan_test_image/20221205_mantis1496 Thank you. Dean Chiang |
|
|
Hi, Dean, The last test image(20221205_mantis1496) was built based on 535 branches. 535 branches is a special branch, so please build the test image based on 534 branches. You don't need to rebuild the last test image(20221205_mantis1496), but please be careful next time. Thank you. |
|
|
Hi, Dean, Could you please build a test firmware? SD only. 1. based on BFX-UA300_5.3.5_2022-1201-110011.xml 2. update the vendor/skb/framework/btf branch, following commit should be applied commit ba15b7427527a901b4fc008be7693ac7ba2937a8 (skb_bcf/BFX-UA300_5.3.5) Author: kim gwang sung <jung2604@sptek.co.kr> Date: Mon Dec 5 16:26:10 2022 +0900 [BPM-12763] [5.3.5a Hotfix] 예고편 시청 후 본편 이어보기 시, Player 조작 불가 - - 이슈 : 예고편 컨텐츠를 SEEK로 끝까지 이동하면 서버에서 내려주는 데이터에 iframe이 없는 경우 시간체크를 하는 스레드 무한루프에 빠져이전 값을 계속 사용하는 버그로 인해서 UI가 키동작이 되지 않음 - 해결 : RTSP가 STOP상태이면 시간체크 스레드를 빠져나가도록 수정 - VERSION_NUM = "6.0.10_535"; BUILD_DATE = "2022-12-05_16:52:54"; This firmware is based on 535 branches. Thank you. |
|
|
Hi Sangmin, Upload ok. /release_by_fxn/swan_test_image/20221206_mantis1496 Thank you. Dean Chiang |
|
|
Hi, Dean, Could you please build a test firmware after applied attached patches? SD only. This firmware is based on 534 branches. vendor/synaptics/btv-hal-impl/synaptics AI2-100-amp_wrapper-2.patch syna-release/ampsdk AI2-100-vdec-1.patch Thank you. AI2-100-vdec-1.patch (20,362 bytes)
diff --git a/amp/src/ddl/vcodec/comp_vdec/source/ddl_vdec.c b/amp/src/ddl/vcodec/comp_vdec/source/ddl_vdec.c
index 1c74a88..9f3a6bd 100755
--- a/amp/src/ddl/vcodec/comp_vdec/source/ddl_vdec.c
+++ b/amp/src/ddl/vcodec/comp_vdec/source/ddl_vdec.c
@@ -233,6 +233,7 @@ typedef struct {
// for dump
FILE *fpYUV;
FILE *fpES;
+ FILE *fpES2;
// for checking allocate memory size
UINT32 uiPrevYuvWidth;
UINT32 uiPrevYuvHeight;
@@ -298,7 +299,7 @@ static const UINT32 uiBlockSize = 64;
static HRESULT putGuardBlock(COMPONENT hInstance, AMP_BD_HANDLE hBD,
INT32 x, INT32 y);
static HRESULT dumpYUV(COMPONENT hInstance, AMP_BD_HANDLE hBD);
-static HRESULT dumpES(COMPONENT hInstance, AMP_BD_HANDLE hBD);
+static HRESULT dumpES(COMPONENT hInstance, AMP_BD_HANDLE hBD, BOOL input);
static UINT32 g_bIsGuardEntering = 0;
static UINT32 g_bIsGuardLeaving = 0;
@@ -687,6 +688,12 @@ static HRESULT DDL_VDEC_doDestroy(COMPONENT hInstance)
fclose(pHld->fpES);
pHld->fpES = NULL;
}
+ if (pHld->fpES2) {
+ VDEC_LOGI("dump es done before return\n");
+ fclose(pHld->fpES2);
+ pHld->fpES2 = NULL;
+ }
+
if (pHld->fpYUV) {
VDEC_LOGI("dump yuv done\n");
fclose(pHld->fpYUV);
@@ -883,7 +890,9 @@ HRESULT DDL_VDEC_Open(COMPONENT hInstance,
pPort->stInfo.pMediaCap[0] = 0xf000000;
pHld->uMode = config->mode;
- pHld->uCBufSize = config->uiSHMSize;
+ if ((config->uiFlag & AMP_VDEC_MODE_FRAME_IN) == 0) {
+ pHld->uCBufSize = config->uiSHMSize;
+ }
pHld->hLastBD = NULL;
pHld->hVdec = NULL;
@@ -1523,11 +1532,15 @@ static HRESULT handleSetupPort(COMPONENT hInstance, AMP_PORT_IO ePortIo,
PORT *pPeerPort = &hPeerInstance->pPort[AMP_PORT_OUTPUT][pPort->stConn.uiPeerPortIdx];
pHld->uCBufSize = pPeerPort->stInfo.uiBufSize;
DDL_COMPONENT_UnlockConnection(hInstance, AMP_PORT_INPUT, uiPortIdx);
- VDEC_LOGH("NOTE: DMX SetupPort, uCBufSize=0x%x\n", pHld->uCBufSize);
+ if(!VDec_IsFrameInMode(pHld->hVdec)) {
+ VDEC_LOGH("NOTE: DMX SetupPort, uCBufSize=0x%x\n", pHld->uCBufSize);
- result = Vdec_ConfigCBlock(pHld->hVdec, pHld->uCBufSize, 0, 0,
- pHld->uWrapBufAddr, pHld->uWrapBufAddrVir);
- DDLAssertReturn(result);
+ result = Vdec_ConfigCBlock(pHld->hVdec, pHld->uCBufSize, 0, 0,
+ pHld->uWrapBufAddr, pHld->uWrapBufAddrVir);
+ DDLAssertReturn(result);
+ } else {
+ VDEC_LOGH("NOTE: not set CBUF pool size under frame in mode, uCBufSize=0x%x\n", pHld->uCBufSize);
+ }
} else {
VDEC_LOGH("NOTE: OMX or others SetupPort, uCBufSize = 0x%x\n", pHld->uCBufSize);
result = Vdec_ConfigCBlock(pHld->hVdec, pHld->uCBufSize, 0, 0,
@@ -2404,6 +2417,7 @@ HRESULT DDL_Callback(UINT32 uiEvent, UINT32 uiParam1, UINT32 uiParam2,
DDLAssertReturn(DescPoolSetFlagByAddr(pHld->hStrmDescPool,
pVmetaDescTag->uDesc, VMETA_DESC_SLOT_FREE));
+ dumpES(hInstance, hBD, FALSE);
DDLAssertReturn(AMP_BDTAG_DelTail(hBD));
hRet = BDTagGetVMetaDesc(hBD, &pVmetaDescTag);
if (hRet == SUCCESS) {
@@ -2412,8 +2426,9 @@ HRESULT DDL_Callback(UINT32 uiEvent, UINT32 uiParam1, UINT32 uiParam2,
}
UINT32 uNum = 0;
DDLAssertReturn(DescPoolGetBusyNumber(pHld->hStrmDescPool, &uNum));
- VDEC_LOGM(COMPVDEC"Return Stream BD=%p bdid=%d left (%d)\n",
- hBD, AMP_BD_GET_BDID(hBD), uNum);
+ VDEC_LOGH(COMPVDEC"Return Stream BD=%p bdid=%d size:%d, left (%d)\n",
+ hBD, AMP_BD_GET_BDID(hBD), pTag->uSize, uNum);
+
DDLAssertCheck(AMP_SHM_Unref(pTag->uMemHandle));
DDLAssertReturn(releaseStrmBuf(hInstance, hBD));
}
@@ -2695,7 +2710,7 @@ HRESULT VDEC_ACTION_PushBuf(VDEC_HLD *pHld, AMP_BD_HANDLE hBD) {
0, 0, FALSE));
}
#endif
- VDEC_LOGM(COMPVDEC"Push stream %p (%x)\n", hBD, AMP_BD_GET_BDID(hBD));
+ VDEC_LOGH(COMPVDEC"Push stream %p (%x), size:%d\n", hBD, AMP_BD_GET_BDID(hBD), pDesc->size);
if ((pTag->uFlag & AMP_MEMINFO_FLAG_FLUSH_MASK) != 0) {
DDLAssertCleanup(fillFlushBDBuffer(hInstance, pTag->uFlag));
@@ -2718,7 +2733,7 @@ HRESULT VDEC_ACTION_PushBuf(VDEC_HLD *pHld, AMP_BD_HANDLE hBD) {
}
BDResetUnitStart(pHld->hVdec, hBD);
- dumpES(hInstance, hBD);
+ dumpES(hInstance, hBD, TRUE);
DDLAssertCleanup(Vdec_EmptyThisBuffer(pHld->hVdec, hBD));
return hRet;
@@ -3183,7 +3198,7 @@ Exit:
return SUCCESS;
}
-HRESULT dumpES(COMPONENT hInstance, AMP_BD_HANDLE hBD)
+HRESULT dumpES(COMPONENT hInstance, AMP_BD_HANDLE hBD, BOOL input)
{
#ifndef ENABLE_VDEC_DUMP_ES
MV_UNUSED(hInstance);
@@ -3192,6 +3207,7 @@ HRESULT dumpES(COMPONENT hInstance, AMP_BD_HANDLE hBD)
VDEC_HLD *pHld = hInstance->pHld;
VDecoder *pVDec;
FILE **fpp = &(pHld->fpES);
+ FILE **fpp2 = &(pHld->fpES2);
HRESULT ret = SUCCESS;
VOID *pVirtAddr = NULL;
VOID *pPhyAddr = NULL;
@@ -3209,6 +3225,12 @@ HRESULT dumpES(COMPONENT hInstance, AMP_BD_HANDLE hBD)
fclose(*fpp);
*fpp = NULL;
}
+ if (*fpp2 != NULL) {
+ VDEC_LOGH("dump es done\n");
+ fclose(*fpp2);
+ *fpp2 = NULL;
+ }
+
return SUCCESS;
}
@@ -3252,6 +3274,37 @@ HRESULT dumpES(COMPONENT hInstance, AMP_BD_HANDLE hBD)
}
}
+ if (*fpp2 == NULL) {
+ char filename[FILENAME_LEN] = {0};
+ char *dirname;
+ if (g_pDumpDirName[0] == '\0') {
+ dirname = checkDumpDir();
+ if (dirname == NULL) {
+ return VDEC_IOFAIL;
+ }
+ } else {
+ dirname = g_pDumpDirName;
+ }
+ char *timebuf = getFTime();
+ if (timebuf == NULL) {
+ return HRESULT_GEN(VDEC, ERR_NOSWRSC);
+ }
+ ret = snprintf(filename, FILENAME_LEN, "%s/vdec_%s_%p_%s_bak.es",
+ dirname, showFmtId(pVDec->strmCfg.format), pVDec, timebuf);
+ free(timebuf);
+ if (ret > FILENAME_LEN) {
+ VDEC_LOGE("filename %s greater than %d\n", filename, FILENAME_LEN);
+ return HRESULT_GEN(VDEC, ERR_NOSWRSC);
+ }
+ VDEC_LOGH("vdec %p dump es to file %s\n", pHld, filename);
+ *fpp2 = fopen(filename, "w");
+ if (*fpp2 == NULL) {
+ VDEC_LOGE("open file fail %d %s\n", errno, strerror(errno));
+ return VDEC_IOFAIL;
+ }
+ }
+
+
if (ShmType & AMP_SHM_FLAG_SECURE) {
#ifdef TZ_DUMP
if (register_debugTA() == SUCCESS) {
@@ -3289,8 +3342,14 @@ HRESULT dumpES(COMPONENT hInstance, AMP_BD_HANDLE hBD)
}
BD_SwConsume(hBD, pVDec->pTeeCtx);
- fwrite((UINT8 *)pVirtAddr, 1, pStrmBufDesc->size, *fpp);
- fflush(*fpp);
+
+ if (input) {
+ fwrite((UINT8 *)pVirtAddr, 1, pStrmBufDesc->size, *fpp);
+ fflush(*fpp);
+ } else {
+ fwrite((UINT8 *)pVirtAddr, 1, pStrmBufDesc->size, *fpp2);
+ fflush(*fpp2);
+ }
#endif
return SUCCESS;
diff --git a/amp/src/ddl/vcodec/comp_vdec/source/internal_vdec_api.c b/amp/src/ddl/vcodec/comp_vdec/source/internal_vdec_api.c
index 2351249..cf71064 100755
--- a/amp/src/ddl/vcodec/comp_vdec/source/internal_vdec_api.c
+++ b/amp/src/ddl/vcodec/comp_vdec/source/internal_vdec_api.c
@@ -3178,7 +3178,7 @@ static HRESULT consume_user_data_sei(VDecoder *pVDec, USER_DATA_BLOCK_HEADER *pH
pVDec->sHdrInfo.MaxFALL = readU16(p + 2);
return SUCCESS;
default:
- VDEC_LOGH("%p: ignore user_data SEI type=%x", pVDec, pHeader->m_type);
+ VDEC_LOGL("%p: ignore user_data SEI type=%x", pVDec, pHeader->m_type);
return ERR_UNHANDLED;
}
}
@@ -4454,6 +4454,7 @@ static HRESULT return_str_buf(VDecoder *pVDec) {
pVDec->uNoDecStrmSize -= pStrmBufDescInChecking->size;
if (pVDec->uiDecodeMode != AMP_VDEC_IOPARAM_DECODE_REVERSE) {
+ VDEC_LOGH("pVDec:%p, return_es, hBD:%p\n", pVDec, hBDInChecking);
VDECLOGIFERR(pVDec->hCB(AMP_VDEC_EVENT_EMPTY_ES_DONE,
(UINT32)hBDInChecking, 0, pVDec->uiCBData))
}
@@ -4541,6 +4542,7 @@ static HRESULT internal_stop_stream(VDecoder *pVDec) {
for (i = 0; i < uNum; i++) {
VDECLOGIFERR(AMP_BDCHAIN_PopItem(pVDec->pvMetaBufQueue, &hBD))
if (pVDec->uiDecodeMode != AMP_VDEC_IOPARAM_DECODE_REVERSE) {
+ VDEC_LOGH("pVDec:%p, return_es, hBD:%p\n", pVDec, hBD);
VDECLOGIFERR(pVDec->hCB(AMP_VDEC_EVENT_EMPTY_ES_DONE,
(UINT32) hBD, 0, pVDec->uiCBData))
}
@@ -4550,6 +4552,7 @@ static HRESULT internal_stop_stream(VDecoder *pVDec) {
for (i = 0; i < uNum; i++) {
VDECLOGIFERR(AMP_BDCHAIN_PopItem(pVDec->pStrmBufQueue, &hBD))
if (pVDec->uiDecodeMode != AMP_VDEC_IOPARAM_DECODE_REVERSE) {
+ VDEC_LOGH("pVDec:%p, return_es, hBD:%p\n", pVDec, hBD);
VDECLOGIFERR(pVDec->hCB(AMP_VDEC_EVENT_EMPTY_ES_DONE,
(UINT32) hBD, 0, pVDec->uiCBData))
}
@@ -4571,6 +4574,7 @@ static HRESULT internal_stop_stream(VDecoder *pVDec) {
case CMD_IBUFNOTIFY:
if (pVDec->uiDecodeMode != AMP_VDEC_IOPARAM_DECODE_REVERSE) {
unpackMsgIBuf(msg, &hBD, NULL);
+ VDEC_LOGH("pVDec:%p, return_es, hBD:%p\n", pVDec, hBD);
VDECLOGIFERR(pVDec->hCB(AMP_VDEC_EVENT_EMPTY_ES_DONE,
(UINT32)hBD, 0, pVDec->uiCBData))
}
@@ -5906,7 +5910,6 @@ HRESULT decode_video(VDecoder *pVDec) {
VMETA_CBLOCK *pCblk = pVDec->pStrmCtrlBlock->pVir;
MV_UNUSED(pCblk);
- VDECPRT("tony trace inside decode_stream_main_loop - 2-1. enter decode_video() \n", __LINE__);
if (pHalDecoder->check_strm_buffer
&& (pVDec->bInFlush == false)
&& (pCblk->uFrameInMode == FRAME_IN_NO_32B_ALIGN)
@@ -5927,6 +5930,7 @@ HRESULT decode_video(VDecoder *pVDec) {
SETSTATE(pVDec->eState, VDEC_STATE_WAIT_INPUT_BUFFER)
VDEC_LOGH("%p:"BUFSTR"Check Stream Count %d\n", pVDec,
pVDec->uiPushedStrmBufCount);
+ updateStrmThreshFrameCheck(pVDec);
return SUCCESS;
}
}
@@ -5941,7 +5945,6 @@ HRESULT decode_video(VDecoder *pVDec) {
return SUCCESS;
VdecAssertReturn(hRet);
- VDECPRT("tony trace inside decode_stream_main_loop - 2-2. before pHalDecoder->decode_stream() \n", __LINE__);
while (1) {
int dret = 0;
int ud;
@@ -5958,7 +5961,6 @@ HRESULT decode_video(VDecoder *pVDec) {
VDEC_LOGE("%p: pHalDecode recoverable error=%d, continue to decode", pVDec, dret);
}
- VDECPRT("tony trace inside decode_stream_main_loop - 2-3. before waitIRQ() \n", __LINE__);
if(pHalDecoder->waitIRQ){
if (pVdecStrmStatus->wait_for_int) {
//VDECPRT("%p:before Int\n", pVDec);
@@ -5969,7 +5971,6 @@ HRESULT decode_video(VDecoder *pVDec) {
}
}
- VDECPRT("tony trace inside decode_stream_main_loop - 2-4. after waitIRQ() \n", __LINE__);
performance_monitor(pVDec, pVdecStrmStatus, ud);
#ifndef TRUSTZONE
if((pVdecStrmStatus->event_id == VDEC_EVENT_SYNCWORD) && (pCblk->uiUserDataMask != 0)){
@@ -5999,7 +6000,6 @@ HRESULT decode_video(VDecoder *pVDec) {
break;
}
- VDECPRT("tony trace inside decode_stream_main_loop - 2-5. if we reach here.... () \n", __LINE__);
// if we reach here,
// 1) One frame decoding finished, switch point comes
// 2) VDEC_EVENT_ALLOC_STR_BUF
@@ -6133,12 +6133,14 @@ static void decode_stream_process_msg(VDecoder *pVDec, MV_CC_MSG_t *pMsg) {
if (uEndPos < pVDec->uGopStartPos) {
VDECPRT("%p:"REVERSE" recycle stream buffer %p\n", pVDec, hBD);
VDECLOGIFERR(AMP_BDCHAIN_PopItem(pVDec->pRevStrmQueue, &hBD));
+ VDEC_LOGH("pVDec:%p, return_es, hBD:%p\n", pVDec, hBD);
VDECLOGIFERR(pVDec->hCB(AMP_VDEC_EVENT_EMPTY_ES_DONE,
(UINT32) hBD, 0, pVDec->uiCBData));
} else if (uEndPos - pVDec->uGopStartPos >
uiThresh) {
VDECPRT("%p:"REVERSE" recycle stream buffer %p\n", pVDec, hBD);
VDECLOGIFERR(AMP_BDCHAIN_PopItem(pVDec->pRevStrmQueue, &hBD));
+ VDEC_LOGH("pVDec:%p, return_es, hBD:%p\n", pVDec, hBD);
VDECLOGIFERR(pVDec->hCB(AMP_VDEC_EVENT_EMPTY_ES_DONE,
(UINT32) hBD, 0, pVDec->uiCBData));
} else {
@@ -6185,7 +6187,7 @@ static void decode_stream_process_msg(VDecoder *pVDec, MV_CC_MSG_t *pMsg) {
// Maybe need to come up with better solution in up layer API.
//
// If user want to cache, then cache in PAUSE.
- VDEC_LOGH("%p:"BUFSTR" Receive BD %p in idle state.\n", pVDec, hBD);
+ VDEC_LOGH("%p:"BUFSTR" Receive BD %p in idle state, return_es\n", pVDec, hBD);
VDECLOGIFERR(pVDec->hCB(AMP_VDEC_EVENT_EMPTY_ES_DONE,
(UINT32) hBD, 0, pVDec->uiCBData))
} else {
@@ -6245,7 +6247,7 @@ static void decode_stream_process_msg(VDecoder *pVDec, MV_CC_MSG_t *pMsg) {
}
if (VdecProcessBD(pVDec, hBD) == false || pBigDesc->uSize == 0) {
- VDECPRT("%p:"BUFSTR"skip strm hBD=%p as no meminfo or size is 0",
+ VDEC_LOGH("%p:"BUFSTR"skip strm hBD=%p as no meminfo or size is 0, return_es\n",
pVDec, hBD);
VDECLOGIFERR(pVDec->hCB(AMP_VDEC_EVENT_EMPTY_ES_DONE,
(UINT32)hBD, 0, pVDec->uiCBData));
@@ -6258,7 +6260,7 @@ static void decode_stream_process_msg(VDecoder *pVDec, MV_CC_MSG_t *pMsg) {
// Maybe need to come up with better solution in up layer API.
//
// If user want to cache, then cache in PAUSE.
- VDECPRT("%p:"BUFSTR" Receive BD %p in idle state.\n", pVDec, hBD);
+ VDEC_LOGH("%p:"BUFSTR" Receive BD %p in idle state, return_es\n", pVDec, hBD);
VDECLOGIFERR(pVDec->hCB(AMP_VDEC_EVENT_EMPTY_ES_DONE,
(UINT32) hBD, 0, pVDec->uiCBData))
} else {
@@ -6475,7 +6477,6 @@ INT decode_stream_main_loop(VDecoder *pVDec) {
SETSTATE(pVDec->eState, VDEC_STATE_WAIT_INPUT_BUFFER);
return 0;
}
- VDECPRT("tony trace inside decode_stream_main_loop - 1. after VDEC_STATE_WAIT_INPUT_BUFFER \n", __LINE__);
if (pVDec->uiDecodedIndex > 0) {
// judge the display buffer number, in case the VDEC_EVENT_ALLOC_DIS_BUF event
unsigned int uNum;
@@ -6485,24 +6486,20 @@ INT decode_stream_main_loop(VDecoder *pVDec) {
return 0;
}
}
- VDECPRT("tony trace inside decode_stream_main_loop - 2. after VDEC_STATE_WAIT_OUTPUT_BUFFER \n", __LINE__);
if (decode_video(pVDec) != SUCCESS)
break;
- VDECPRT("tony trace inside decode_stream_main_loop - 3. after decode_video \n", __LINE__);
msg.m_MsgID = CMD_NONE;
while (MV_CC_MsgQ_TryGetMsg(pVDec->hDecodeMsgQueue, &msg) == S_OK) {
AMP_ASSERT(msg.m_MsgID != (UINT32) CMD_NONE);
if (msg.m_MsgID == CMD_FREEZE) {
msg.m_Param2 = TRUE;
VDECLOGIFERR(MV_CC_MsgQ_PostMsg(pVDec->hDecodeMsgQueue, &msg));
- VDECPRT("tony trace inside decode_stream_main_loop - 4. hDecodeMsgQueue \n", __LINE__);
return 0;
}
decode_stream_process_msg(pVDec, &msg);
if (msg.m_MsgID == CMD_TERMINATE) {
VDECPRT("%p Exit Decode task\n", pVDec);
- VDECPRT("tony trace inside decode_stream_main_loop : 5. CMD_TERMINATE proceeded \n", __LINE__);
return -1;
}
msg.m_MsgID = CMD_NONE;
@@ -6654,12 +6651,9 @@ VOID VDec_Decode_Task(VOID *hVDec) {
VDECLOGIFERR(MV_Timer_CreateEx(&pVDec->hStatusLogTimer, pVDec->uiStatusLogPeriod * 1000,
VideoStatusProcess, hVDec, "VideoStatusProcess"));
VDECLOGIFERR(MV_Timer_Start(&pVDec->hStatusLogTimer));
- pid_t tid = gettid();
while (1) {
msg.m_MsgID = CMD_NONE;
- VDEC_LOGH("tony trace VDec comp event loop before(tid=%d) - tony_counter=%d\n", tid, ++tony_counter);
MV_CC_MsgQ_GetMsg(pVDec->hDecodeMsgQueue, &msg);
- VDEC_LOGH("tony trace VDec comp event loop after(msgID = %d(%s), (tid=%d)) - tony_counter=%d\n", msg.m_MsgID, msgtostr(msg.m_MsgID), tid, --tony_counter);
AMP_ASSERT(msg.m_MsgID != (UINT32) CMD_NONE);
if (msg.m_MsgID == CMD_FREEZE) {
VDEC_LOGH("%p:receive freeze\n", pVDec);
@@ -6681,13 +6675,10 @@ VOID VDec_Decode_Task(VOID *hVDec) {
if (bStreamFreeze == FALSE) {
decode_stream_process_msg(pVDec, &msg);
- VDEC_LOGH("tony trace before decode_stream_main_loop() state = %d\n", pVDec->eState);
if (decode_stream_main_loop(pVDec) < 0) {
- VDEC_LOGH("tony trace ERROR in decode_stream_main_loop() state = %d\n", pVDec->eState);
VDEC_LOGH("%p:Exit Decode task\n", pVDec);
return;
}
- VDEC_LOGH("tony trace after decode_stream_main_loop() state = %d\n", pVDec->eState);
}
}
}
diff --git a/amp/src/ddl/vcodec/comp_vdec/source/vdec_misc.c b/amp/src/ddl/vcodec/comp_vdec/source/vdec_misc.c
index 2f12854..81c68b3 100755
--- a/amp/src/ddl/vcodec/comp_vdec/source/vdec_misc.c
+++ b/amp/src/ddl/vcodec/comp_vdec/source/vdec_misc.c
@@ -66,6 +66,7 @@
#define THRESH_FRAME_NUM 3
#define THRESH_B_FRAME_NUM 20
#define SEQUENCE_CHECK_COUNT 4
+#define THRESH_ES_NUM 10
HRESULT initThreshFrameCheck(VDecoder *pVDec) {
VMETA_CBLOCK *pCblk = pVDec->pStrmCtrlBlock->pVir;
@@ -136,3 +137,30 @@ HRESULT updateThreshFrameCheck(VDecoder *pVDec, EVENT_CELL *pEventCell) {
#endif
return SUCCESS;
}
+
+HRESULT updateStrmThreshFrameCheck(VDecoder *pVDec) {
+#ifdef DYNAMIC_THRESH
+ VMETA_CBLOCK *pCblk = pVDec->pStrmCtrlBlock->pVir;
+ UINT32 uTempThreshold = 0;
+ UINT32 uCurTiming = 0;
+
+ if (pVDec->uiLastFrameTime) {
+ uCurTiming = AMP_GetCurrentTimeMS() - pVDec->uiLastFrameTime;
+ }
+
+ if (uCurTiming > 40) {
+ if (pVDec->uiPushedStrmBufCount > THRESH_ES_NUM) {
+ uTempThreshold = pVDec->uNoDecStrmSize/pVDec->uiPushedStrmBufCount;
+ if (uTempThreshold < pCblk->uThreshFrameCheck) {
+ pCblk->uThreshFrameCheck = uTempThreshold;
+
+ VDECPRT("%p: update thresh: %d BDs (%d bytes) in HWVDEC, "
+ "timing=%dms, uThreshFrameCheck=%d\n",
+ pVDec, pVDec->uiPushedStrmBufCount, pVDec->uNoDecStrmSize,
+ uCurTiming, pCblk->uThreshFrameCheck);
+ }
+ }
+ }
+#endif
+ return SUCCESS;
+}
diff --git a/amp/src/ddl/vcodec/comp_vdec/source/vdec_misc.h b/amp/src/ddl/vcodec/comp_vdec/source/vdec_misc.h
index 4221bbb..9183bc2 100644
--- a/amp/src/ddl/vcodec/comp_vdec/source/vdec_misc.h
+++ b/amp/src/ddl/vcodec/comp_vdec/source/vdec_misc.h
@@ -51,6 +51,7 @@
HRESULT initThreshFrameCheck(VDecoder *pVDec);
HRESULT updateBitRateThreshFrameCheck(VDecoder *pVDec, UINT32 bit_rate);
HRESULT updateThreshFrameCheck(VDecoder *pVDec, EVENT_CELL *pEventCell);
+HRESULT updateStrmThreshFrameCheck(VDecoder *pVDec);
#endif
AI2-100-amp_wrapper-2.patch (1,932 bytes)
diff --git a/amp_wrapper.c b/amp_wrapper.c
index 840e067..9249fad 100644
--- a/amp_wrapper.c
+++ b/amp_wrapper.c
@@ -882,6 +882,7 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
amp_config._d = AMP_COMPONENT_VDEC;
amp_config._u.pVDEC.mode = AMP_SECURE_TUNNEL;
amp_config._u.pVDEC.uiType = v_codec;
+ amp_config._u.pVDEC.uiFlag = 1 << 9; // use frame-in mode
/* TODO : ??????
if (amp_zapping_mgr.enable_nr) {
amp_config._u.pVDEC.uiFlag |= 1 << 6;
@@ -1066,6 +1067,10 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
output_config.eType = AMP_DMX_OUTPUT_VES;
output_config.Tag = 0;
output_config.uPid = v_pid;
+ output_config.uAlign = 2;
+ output_config.eESOutputMode = AMP_DMX_ES_OUTPUT_MODE_UNITSTART_ALIGN;
+ output_config.uBufSize = 8 * 1024 * 1024;
+ output_config.uBufPaddingSize = 2 * 1024 * 1024;
socPlayerInfo->dmx_output_v.uiPortIdx = AMP_DMX_ANY_PORT_IDX;
amp_log(socPlayerInfo->pip ? 1:0, "amp_create_pipeline_bottom_half 14 in, AVP_START");
AMP_RPC(ret, AMP_DMX_AddChannel, socPlayerInfo->amp_dmx, &output_config, &socPlayerInfo->dmx_output_v);
@@ -1089,6 +1094,10 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
output_config.eType = AMP_DMX_OUTPUT_AES;
output_config.Tag = 0;
output_config.uPid = a_pid;
+ output_config.uAlign = 2;
+ output_config.eESOutputMode = AMP_DMX_ES_OUTPUT_MODE_UNITSTART_ALIGN;
+ output_config.uBufSize = 1 * 1024 * 1024;
+ output_config.uBufPaddingSize = 16 * 1024;
socPlayerInfo->dmx_output_a.uiPortIdx = AMP_DMX_ANY_PORT_IDX;
amp_log(socPlayerInfo->pip ? 1:0, "amp_create_pipeline_bottom_half 17 in, AVP_START");
AMP_RPC(ret, AMP_DMX_AddChannel, socPlayerInfo->amp_dmx, &output_config, &socPlayerInfo->dmx_output_a);
|
|
|
Hi Sangmin, Upload ok. /release_by_fxn/swan_test_image/20221209_mantis1496 Thank you. Dean Chiang |
|
|
Hi, Dean, Could you please build a test firmware? SD and ND. It's a little different from previous request. Please check the followings carefully. 1. add following line to .repo/manifests/skb_prebuilts.xml <project sync-c="true" sync-tags="false" remote="skb_prebuilts" revision="SKB_NEWRTSP_ATV_TEST" groups="skb_prebuilts" path="vendor/skb/prebuilts/skp_rtsp" name="skp_rtsp" /> You should run the repo init and repo sync again. Please check vendor/skb/prebuilts/skp_rtsp is exist or not. 2. change the branch of vendor/skb/framework/btf cd vendor/skb/framework/btf git checkout -b TEST_SKB_RTSP_AI2 skb_bcf/TEST_SKB_RTSP_AI2 3. change the branch of vendor/skb/prebuilts/boot_config cd vendor/skb/prebuilts/boot_config git checkout -b TEST_SKB_RTSP_AI2 skb_prebuilts/TEST_SKB_RTSP_AI2 4. change the firmware version cd vendor/skb/prebuilts/boot_config echo 19.534.927 > version.txt If you have any question, please let me know. Thank you. |
|
|
Hi Sangmin, test FW is on FTP /release_by_fxn/swan_test_image/20221215_mantis1496 |
|
|
Hi, Dean, Could you please build a test firmware after applied attached patches? SD only. This firmware is based on 534 branches. 1. remove following commits syna-release/ampsdk 99db43c congested vbi interrupt filtering (2) 8b0a6b7 congested vbi interrupt filtering 3da94a7 https://sc-debu-git.synaptics.com/gerrit/#/c/171604/2 01fc31b empty_bd_pool crash 893ee44 https://sc-debu-git.synaptics.com/gerrit/#/c/171604/ 380a0c4 https://sc-debu-git.synaptics.com/gerrit/#/c/162747/ 2. apply SKBSBLT-191.patch vendor/synaptics/vsxxx Thank you. SKBSBLT-191.patch (3,513 bytes)
diff --git a/interfaces/display/2.1/impl/handlers/BerlinVideoOutput.cpp b/interfaces/display/2.1/impl/handlers/BerlinVideoOutput.cpp
index 291c073..79abb9b 100644
--- a/interfaces/display/2.1/impl/handlers/BerlinVideoOutput.cpp
+++ b/interfaces/display/2.1/impl/handlers/BerlinVideoOutput.cpp
@@ -839,46 +839,46 @@ status_t BerlinVideoOutput::SetDisplayMode(VideoOutputType vout_type,
disp_handle_, AMP_DISP_TG_PRI,
resID, hdmi_vout_config_.bit_depth);
AVS_CHECK(ret, "AMP_DISP_OUT_SetResolution");
- }
- //Vas add modified; River 2021/09/17
-
- AMP_RPC(ret, AMP_DISP_OUT_HDMI_SetVidFmt,
- disp_handle_,
- hdmi_vout_config_.color_format,
- hdmi_vout_config_.bit_depth,
- hdmi_vout_config_.pixel_repetition);
- AVS_CHECK(ret, "AMP_DISP_OUT_HDMI_SetVidFmt");
-
- // only need to check SD resolution
- if (display_mode.width <= 720) {
- for (uint32_t i = 0; i < hdmi_sink_caps_.uiResCnt && i < 64; i++) {
- if (hdmi_sink_caps_.ResInfo[i].ihActive == (int)display_mode.width &&
- hdmi_sink_caps_.ResInfo[i].ivActive == (int)display_mode.height) {
- aspect = hdmi_sink_caps_.ResInfo[i].iAspRatio;
- break;
- }
- }
-
- if (aspect == AMP_DISP_OUT_ASPECT_RATIO_4BY3 ||
- aspect == AMP_DISP_OUT_ASPECT_RATIO_16BY9) {
- // scaninfor unchanged, configure it to -1
- AMP_RPC(ret, AMP_DISP_OUT_HDMI_SetVidInfo, disp_handle_, aspect, -1);
- AVS_CHECK(ret, "AMP_DISP_OUT_HDMI_SetVidInfo");
- }
- }
-
- // Reset HDR enable setting concern the new format support HDR
- ResetHdrSettings();
-
- if (notify) {
- // Check if notify is required
- // We have already notified observers if call from ApplySetting
- value.setString(display_mode.ToString());
- key = AVSettingsHelper::GetFullKey(marvell::kVideoOutputSettingsPrefix,
- marvell::kHDMIDisplayMode);
- av_settings_handle_->NotifyValue(key.string(), value);
- }
-
+ //Vas add modified; River 2021/09/17
+
+ AMP_RPC(ret, AMP_DISP_OUT_HDMI_SetVidFmt,
+ disp_handle_,
+ hdmi_vout_config_.color_format,
+ hdmi_vout_config_.bit_depth,
+ hdmi_vout_config_.pixel_repetition);
+ AVS_CHECK(ret, "AMP_DISP_OUT_HDMI_SetVidFmt");
+
+ // only need to check SD resolution
+ if (display_mode.width <= 720) {
+ for (uint32_t i = 0; i < hdmi_sink_caps_.uiResCnt && i < 64; i++) {
+ if (hdmi_sink_caps_.ResInfo[i].ihActive == (int)display_mode.width &&
+ hdmi_sink_caps_.ResInfo[i].ivActive == (int)display_mode.height) {
+ aspect = hdmi_sink_caps_.ResInfo[i].iAspRatio;
+ break;
+ }
+ }
+
+ if (aspect == AMP_DISP_OUT_ASPECT_RATIO_4BY3 ||
+ aspect == AMP_DISP_OUT_ASPECT_RATIO_16BY9) {
+ // scaninfor unchanged, configure it to -1
+ AMP_RPC(ret, AMP_DISP_OUT_HDMI_SetVidInfo, disp_handle_, aspect, -1);
+ AVS_CHECK(ret, "AMP_DISP_OUT_HDMI_SetVidInfo");
+ }
+ }
+
+ // Reset HDR enable setting concern the new format support HDR
+ ResetHdrSettings();
+
+ if (notify) {
+ // Check if notify is required
+ // We have already notified observers if call from ApplySetting
+ value.setString(display_mode.ToString());
+ key = AVSettingsHelper::GetFullKey(marvell::kVideoOutputSettingsPrefix,
+ marvell::kHDMIDisplayMode);
+ av_settings_handle_->NotifyValue(key.string(), value);
+ }
+ }
+
AVS_FUNC_LEAVE
return android::OK;
|
|
|
Hi Sangmin, test FW is on FTP /release_by_fxn/swan_test_image/20230106_mantis1496 |
|
|
Hi, Jim, Could you please build a test firmware after applied attached patches? SD only. This firmware is based on 534 branches. syna-release/ampsdk CSMSKBSBLT-201-Unmute-HDMI.patch Thank you. CSMSKBSBLT-201-Unmute-HDMI.patch (2,384 bytes)
diff --git a/amp/src/aal/sound/sound_api.c b/amp/src/aal/sound/sound_api.c
index 27c374c..ac3b5dd 100755
--- a/amp/src/aal/sound/sound_api.c
+++ b/amp/src/aal/sound/sound_api.c
@@ -3067,6 +3067,7 @@ HRESULT AMP_SND_SetStreamVolumeIndB(AMP_IN HANDLE hStream, AMP_IN float fVolume)
SND_STRM *pStream = 0;
UINT32 uiVolume = 0;
AMP_APP_PARAST stAppParam;
+ AMP_SOUND_DRIVER *pSndDrv = g_stSndDriver;
SND_API_ENTER();
SNDDRV_CHECKVALID();
@@ -3097,6 +3098,7 @@ HRESULT AMP_SND_SetStreamVolumeIndB(AMP_IN HANDLE hStream, AMP_IN float fVolume)
(pStream->PeerPortConn.hInterHandle == SOUND_PORTID_PASSTHROUGH &&
pStream->PeerPortConn.uiFlags == HDMI_PATH))
{
+ MV_OSAL_Mutex_Lock(pSndDrv->hDrvMutex);
#ifdef CONFIG_AMP_AUDIO_MUTE_PT_FOR_STREAM
SNDLOGD("HDMI pass through case, stream volume is set to AOUT!\n");
AMP_RPC(rc, AMP_SNDSINK_SetAoutStreamVolume, pStream->hSndSinkComp,
@@ -3109,6 +3111,11 @@ HRESULT AMP_SND_SetStreamVolumeIndB(AMP_IN HANDLE hStream, AMP_IN float fVolume)
#if 1 //tony debug
pStream->uiStreamVolume = uiVolume;
#endif
+ if( pStream->uiStreamVolume != 0 ){
+ AMP_RPC(rc, AMP_SNDSINK_SetAoutStreamVolume, pStream->hSndSinkComp, HDMI_PATH, 0x40000000L);
+ }
+ MV_OSAL_Mutex_Unlock(pSndDrv->hDrvMutex);
+
return rc;
}
@@ -3482,7 +3489,6 @@ HRESULT AMP_SND_SetStreamMute(AMP_IN HANDLE hStream, AMP_IN BOOL bMute)
SNDSTRM_CHECKVALID(hStream);
pStream = (SND_STRM *)hStream;
stAppParam._d = AMP_APP_PARAIDX_VOLUME;
-
if((pStream->PeerPortConn.ePeerType == AMP_PORT_AREN_OUT_SPDIF)||
(pStream->PeerPortConn.hInterHandle == SOUND_PORTID_PASSTHROUGH &&
@@ -3530,6 +3536,7 @@ HRESULT AMP_SND_SetStreamMute(AMP_IN HANDLE hStream, AMP_IN BOOL bMute)
(pStream->PeerPortConn.hInterHandle == SOUND_PORTID_PASSTHROUGH &&
pStream->PeerPortConn.uiFlags == HDMI_PATH))
{
+ MV_OSAL_Mutex_Lock(pSndDrv->hDrvMutex);
#ifdef CONFIG_AMP_AUDIO_MUTE_PT_FOR_STREAM
SNDLOGD("HDMI pass through case, stream volume is set to AOUT!\n");
#if 1 //tony debug
@@ -3545,6 +3552,7 @@ HRESULT AMP_SND_SetStreamMute(AMP_IN HANDLE hStream, AMP_IN BOOL bMute)
hStream);
}
#endif
+ MV_OSAL_Mutex_Unlock(pSndDrv->hDrvMutex);
return rc;
}
|
|
|
Hi Sangmin, upload to /release_by_fxn/swan_test_image/20230130_mantis1496 Thank you Dean Chiang |
|
|
Hello, Dean, I'm sorry but could you please build a test image once again? SD only. Recent source code has a problem which can't be played live and VOD. Please build a test firmware based on ref_v534r27_D735.xml, and also applied the CSMSKBSBLT-201-Unmute-HDMI.patch. Thank you. Sangmin Choi. ref_v534r27_D735.xml (156,946 bytes)
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="skb" fetch="."/>
<remote name="skb_bcf" fetch="ssh://git@bitbucket.skbroadband.com:7999/stbbcf"/>
<remote name="skb_btv-res" fetch="ssh://git@bitbucket.skbroadband.com:7999/btv-ux"/>
<remote name="skb_prebuilts" fetch="ssh://git@bitbucket.skbroadband.com:7999/stbpac"/>
<remote name="soc-aml" fetch="ssh://git@bitbucket.skbroadband.com:7999/btfaml"/>
<remote name="soc-syna" fetch="ssh://git@bitbucket.skbroadband.com:7999/soc-syna"/>
<remote name="sptek-syna" fetch="ssh://git@bitbucket.skbroadband.com:7999/soc-syna"/>
<default remote="skb" revision="BFX-UA300_5.3.4" sync-j="4"/>
<project name="anypoint_adv" path="vendor/skb/prebuilts/anypoint_adv" remote="skb_prebuilts" revision="a29d6745789bfc6484fa74023571c1b2967a0265" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="apple_tvplus" path="vendor/skb/prebuilts/apple_tvplus" remote="skb_prebuilts" revision="56c195db8a12a8303b9c19a509331e87384aa4fc" upstream="release/common" dest-branch="release/common" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="boot_config" path="vendor/skb/prebuilts/boot_config" remote="skb_prebuilts" revision="0a39db6db321a0618551f675c7b5aa261e7ee563" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="boot_script" path="vendor/skb/prebuilts/boot_script" remote="skb_prebuilts" revision="8c8943d6b5225cc9e3938f7d299c7ae832aa3588" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="bootanimation" path="vendor/skb/prebuilts/bootanimation" remote="skb_prebuilts" revision="90008270b39733bd076a2e4248da6b901ebc72a4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="btf-prebuilts" path="vendor/skb/framework/btf" remote="skb_bcf" revision="e422b20b952f1dfb3814df54f1bfd2f68231d3d4" upstream="BTF_API_LEVEL_6" dest-branch="BTF_API_LEVEL_6" groups="skb_btf,testauto"/>
<project name="btf-sepolicy" path="vendor/skb/framework/btf-sepolicy" remote="soc-syna" revision="42be954cbed605a865f55838868b5e7c5eed747b" upstream="BTF_API_LEVEL_6/bg5ct/android-10" dest-branch="BTF_API_LEVEL_6/bg5ct/android-10" groups="skb_btf"/>
<project name="btv-hal-impl_bfx-ua300" path="vendor/synaptics/btv-hal-impl/bfx-ua300" remote="soc-syna" revision="8311e4f7851303d83467981421f263d0bb23cec0" upstream="BTF_API_LEVEL_6/bg5ct" dest-branch="BTF_API_LEVEL_6/bg5ct" groups="foxconn"/>
<project name="btv-hal-impl_synaptics" path="vendor/synaptics/btv-hal-impl/synaptics" remote="soc-syna" revision="ab33103c5136c9770cb70190845a824d51e552b8" upstream="BTF_API_LEVEL_6/bg5ct/ua300" dest-branch="BTF_API_LEVEL_6/bg5ct/ua300" groups="synaptics"/>
<project name="btv-stb-images-AI2MAX" path="vendor/skb/prebuilts/skb_btv-menu_image" remote="skb_btv-res" revision="aa097e1da415c37294679c932c5efe1585bfa3be" upstream="AI2MAX-5.3.4" dest-branch="AI2MAX-5.3.4" groups="skb_btv-res" sync-c="true" sync-tags="false"/>
<project name="btv-stb-kids_guide" path="vendor/skb/prebuilts/skb_btv-kids_guide" remote="skb_btv-res" revision="67d73fd338aecc11a77baad01d11d5a2e51be694" upstream="KIDS-GUIDE_5.3.4" dest-branch="KIDS-GUIDE_5.3.4" groups="skb_btv-res" sync-c="true" sync-tags="false"/>
<project name="debu-android-device-synaptics-sequoia" path="device/synaptics/sequoia" revision="57be06382cb463c47b19d6031c2b0f7048a1eea6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-android-device-synaptics-sequoia-kernel" path="device/synaptics/sequoia-kernel" revision="da723f5fab2e9ea6613933f9762f31d545b674a7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-android-vendor-imagination" path="vendor/imagination" revision="ad79e2f7ca3fb91cf896e4d88af78640c81e89fd" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-android-vendor-marvell" path="vendor/marvell" revision="b4c58be93ab7a21cde3032f7c7ca2d197247eba7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-android-vendor-synaptics-build" path="vendor/synaptics/build" revision="b675af8a4981a16d14f0494069d5e9efd88c02b6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-android-vendor-synaptics-common" path="vendor/synaptics/common" revision="9efce808bce9bfb55eaee51369752864f1f0c80c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-android-vendor-synaptics-external" path="vendor/synaptics/external" revision="af5ec221befb13beee3a28af88c28a8c12e62577" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-android-vendor-synaptics-overlays" path="vendor/synaptics/overlays" revision="8cc855831612b9a8264a6ea7dafe28c67c429afb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-android-vendor-synaptics-playready" path="vendor/synaptics/playready" revision="50966be7751f604a4132add1c78bbccb73a0bc51" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-android-vendor-synaptics-sequoia" path="vendor/synaptics/sequoia" revision="07397d799e9e875b1c8e90a7f40b2bc45a925f20" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-android-vendor-synaptics-sequoia-gtvs" path="vendor/synaptics/sequoia/gtvs" revision="d8dee560ed672cec7a0a8d93b7d987847285e72a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-android-vendor-synaptics-vsxxx" path="vendor/synaptics/vsxxx" revision="8eb6e0df76ef64fc4eb1fb43caa841cd0f03c242" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-android-vendor-synaptics-widevine" path="vendor/synaptics/widevine" revision="cddf1ce2860f99cd3643479f36dda926236be774" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release" path="syna-release" revision="9660154eda97b598d5d8cd972f127afc2eb72951" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-ampsdk" path="syna-release/ampsdk" revision="1d22ec4e5c49cd7c3a572dff3eef83ad8fe886d1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-ampsdk-amp-src-ddl-acodec-codec-codec_mpeg" path="syna-release/ampsdk/amp/src/ddl/acodec/codec/codec_mpeg" revision="afa64c4b81f2b7887106dc1439bd8132ce38d96b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-ampsdk-amp-src-ddl-acodec-codec-codec_wma" path="syna-release/ampsdk/amp/src/ddl/acodec/codec/codec_wma" revision="88e6b7342e415040f5ea5e48ba7db71fcd0409b0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-ampsdk-amp-src-ddl-acodec-codec-dts_parser" path="syna-release/ampsdk/amp/src/ddl/acodec/codec/dts_parser" revision="281cf8a3df7d715e964c3c6fa1b6ac09e755d134" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-ampsdk-amp-src-ddl-comp_dvs" path="syna-release/ampsdk/amp/src/ddl/comp_dvs" revision="48b674b378fb7bc5238f1f83016ef4af3a43693f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-ampsdk-drm-widevine" path="syna-release/ampsdk/drm/widevine" revision="464ca8ce13e89b35714863e5857b3d22a50aa327" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-application" path="syna-release/application" revision="af0ee0ee5b7328b95482c8e0045f17595fe0f355" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-boot" path="syna-release/boot" revision="4c6e68ed1c59fbef30af24e951fec05cff5ef7c1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-boot-preboot-prebuilts" path="syna-release/boot/preboot/prebuilts" revision="b8beb6248b731a48fed5d39ca7e4248ae9744158" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-build" path="syna-release/build" revision="7487c1cdbb479e04ae86d5597d801c198d1cbd8b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-configs" path="syna-release/configs" revision="d0575cae01ad07e66d1b19439abea99df4408113" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-drm" path="syna-release/drm" revision="6f514665aca4e933cccd2087ddafbce7b46001e8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-drm-pr_syna_ca" path="syna-release/drm/pr_syna_ca" revision="0a404aabe99a9adac0aad3673445b378b049db77" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-drm-pr_syna_ca-3x" path="syna-release/drm/pr_syna_ca/3x" revision="c1cc4d1fb82ec412135b966c5247af5d044e7f52" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-drm-pr_syna_ca-4x" path="syna-release/drm/pr_syna_ca/4x" revision="755ddad3bb76f7c39d0d50029327b45b2de13c01" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-external" path="syna-release/external" revision="0f26d29735e8ac99b1dd07c98dcab42a5b2b13fb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-factory" path="syna-release/factory" revision="cd43b6122314219e9b2b092dcfe48a549d67206e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-fw_enc" path="syna-release/fw_enc" revision="baea4b19c03abab5220581191da91049c3f25198" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-fw_enc-dts_hd" path="syna-release/fw_enc/dts_hd" revision="657d65edbc120688da8fcc6cecbe20c48e397f0e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-fw_enc-mp3" path="syna-release/fw_enc/mp3" revision="b1e744e67173befc8aa279a3091c371e6fc9b02c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-fw_enc-ms11" path="syna-release/fw_enc/ms11" revision="4f0f66b4ea6da5b1fdf8292e9c882cf99bbece8c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-fw_enc-neural" path="syna-release/fw_enc/neural" revision="b2513236cc412abdd3b96edef08b6cc602cfe7e2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-fw_enc-srs" path="syna-release/fw_enc/srs" revision="b728f5c072481598a6beb51e188eb198113cf972" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-linux_4_9_q" path="syna-release/linux_4_9_q" revision="121eb3276576a34fdfa590d218283d2c6c197659" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-osal" path="syna-release/osal" revision="11fb01d6cf01a70becf0a622f647a8a0a2d3da73" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-security" path="syna-release/security" revision="2a52ca4fedf2f31c921bd1d24308490136b5560c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-sysroot-android" path="syna-release/sysroot/android" revision="ce624e34d150f55e8e63ef08a8d237c1231483a4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-sysroot-linux-gtb" path="syna-release/sysroot/linux-gtb" revision="893f0c01ee25538c176f29eda65ad9d0cd80bd6a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-sysroot-linux-rootfs" path="syna-release/sysroot/linux-rootfs" revision="b382699d5efabd721cb2113d86f4698cbaa73e09" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-sysroot-linux-yocto" path="syna-release/sysroot/linux-yocto" revision="d902f6a579510fa49f0c56b9b57402acf7fe64f0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-sysroot-linux-yocto-72" path="syna-release/sysroot/linux-yocto-72" revision="0294cfe7aa91b32c8e99def976d353464a1b6973" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-ta_app" path="syna-release/ta_app" revision="101b32099379dc46bd4995897af56fd51336be8c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-ta_enc" path="syna-release/ta_enc" revision="fe449e5db1539dd62a61c8a2eb81672b7bdcdb7b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-ta_enc-dv" path="syna-release/ta_enc/dv" revision="e5b1502b17fc44b0c083de22e810e2c033330e36" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-ta_enc-libdtscore.ta" path="syna-release/ta_enc/libdtscore.ta" revision="9bb0ca3d0ddfe5dadb15ea0e41c74f514bf9427f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-ta_enc-libdtshd.ta" path="syna-release/ta_enc/libdtshd.ta" revision="107d84be469c00761a35b3dd6593c2873cc1d108" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-ta_enc-libsrstruvol.ta" path="syna-release/ta_enc/libsrstruvol.ta" revision="defd453def303fa8ef02042b200cead23c83d5e8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-ta_enc-libutctl.ta" path="syna-release/ta_enc/libutctl.ta" revision="61daf9a39de63af6c515aa9404bde217ddd585fd" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-ta_enc-libwatermark.ta" path="syna-release/ta_enc/libwatermark.ta" revision="51c4669bcc14bff0318347b6689adbc508749c16" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-ta_enc-libwma.ta" path="syna-release/ta_enc/libwma.ta" revision="9ba6329897ba54dfd52f1c0e2ac57a9bc0e9484c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-ta_enc-pr40" path="syna-release/ta_enc/pr40" revision="f6c65ee24fe0ae04f55f10c5402373516cbed4e5" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-ta_enc-wv15" path="syna-release/ta_enc/wv15" revision="7e2ce3d9774424102f608dfecdd35bd7fd91c874" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-tee" path="syna-release/tee" revision="a3a6117347ae11a72bab84cd3fbdd5e77bc9c383" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="debu-syna-release-toolchain" path="syna-release/toolchain" revision="abe9606da7cf381048ca0b3005cc81129065f163" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="syna"/>
<project name="device-common" path="device/common" revision="9d2a0d0c3aab8b698669bad9810bc52ac7f76dfb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-generic-arm64" path="device/generic/arm64" revision="b2aea8576e3928e9add8b616740e56c1c5a811d2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-generic-armv7-a-neon" path="device/generic/armv7-a-neon" revision="4f543eb2e85a4b140d829ba5e186c895923f67fc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-generic-car" path="device/generic/car" revision="f75a4ff4e6ae7d26049d12d35855102a9cad3dad" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-generic-common" path="device/generic/common" revision="fa38a0a6fa43fdf34b81d37c3acd7dc6ecbd1230" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-generic-goldfish" path="device/generic/goldfish" revision="de1c3f0f8b2d26225da6edcf628c958952c58c06" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-generic-goldfish-opengl" path="device/generic/goldfish-opengl" revision="c643dd7253df3731b927f5e35daaa9bf98393b43" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-generic-lionhead" path="device/generic/lionhead" revision="2632d2f2e3565494e2ee3668e93195dc7bba6128" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-generic-mini-emulator-arm64" path="device/generic/mini-emulator-arm64" revision="672958caf7187fb355149546d886bf5f556ba3e6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-generic-mini-emulator-armv7-a-neon" path="device/generic/mini-emulator-armv7-a-neon" revision="8c906010786b63d1549ea76e0dba2e0c0abc399b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-generic-mini-emulator-x86" path="device/generic/mini-emulator-x86" revision="dc0e1610a68c17e4aaf3a2b06bf18062e8e5e4d0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-generic-mini-emulator-x86_64" path="device/generic/mini-emulator-x86_64" revision="0e0dc9eefb1226163a215ac3bac16dedf15d88f9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-generic-opengl-transport" path="device/generic/opengl-transport" revision="b2e1e50337c4290e0e75c9aa7ba76eda7edf4e6d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-generic-qemu" path="device/generic/qemu" revision="698158b4e699ee4fc6395c200c0105b154d101ca" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-generic-trusty" path="device/generic/trusty" revision="620ea38a0a891db036d0104e9425b1489ed51a61" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-generic-uml" path="device/generic/uml" revision="6574b28ad7b947395c5770b9fdfc384904b305b8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-generic-x86" path="device/generic/x86" revision="7a73a1f8e9fd691cb8f45aa9de303f3c39c3837a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-generic-x86_64" path="device/generic/x86_64" revision="506952733fdebb5a2ef086b519ceebe86a95ae31" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-google-atv" path="device/google/atv" revision="3ec1bba5ac01384bbe3b6791c077b5cc76af50ea" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-google-contexthub" path="device/google/contexthub" revision="86028528d62951e8b323d0aba55a6e85563253a0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-google-cuttlefish" path="device/google/cuttlefish" revision="bbd7feea9acc14a88ef6c5349ef0470c7cdc122c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-google-cuttlefish_common" path="device/google/cuttlefish_common" revision="903ddd5aa56ce72ec774d2c361752546b652457b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-google-cuttlefish_kernel" path="device/google/cuttlefish_kernel" revision="d0d9709c5a19f5fd6cdfbec6aa4c100d5fd6e9e3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-google-cuttlefish_vmm" path="device/google/cuttlefish_vmm" revision="7bea9f0d8c30ca81cbf217fb25605de195b16631" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-google-vrservices" path="device/google/vrservices" revision="c4155c007bd2c32fc6ee70f9212ad800836cef3d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-linaro-hikey" path="device/linaro/hikey" revision="b27f1e3bac64f7c0ad7717185e9197e8d20f6b49" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-linaro-hikey-kernel" path="device/linaro/hikey-kernel" revision="aa2b4dd4f0abfb5771798050154d38ec6b14f21d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-sample" path="device/sample" revision="d64a03ec745d8e4085ae65a868f1e8d66b2d9c4c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-ti-beagle-x15" path="device/ti/beagle_x15" revision="084da5b58a1e6b9e5c9c77783eee412c1ecdfe1e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="device-ti-beagle-x15-kernel" path="device/ti/beagle_x15-kernel" revision="e6da95f21f0586fea0770a2e7146b37a25a3b317" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="digicap_btv-app" path="vendor/skb/prebuilts/digicap_btv-app" remote="skb_prebuilts" revision="f98d637aa377aeae2df7cd41bb51d783265bc39c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts,testauto" sync-c="true" sync-tags="false"/>
<project name="digicap_google-ad-ui" path="vendor/skb/prebuilts/digicap_google-ad-ui" remote="skb_prebuilts" revision="34a1bdad37ce24081bf8d3378af475290d6b2ee3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="digicap_patch-ui" path="vendor/skb/prebuilts/digicap_patch-ui" remote="skb_prebuilts" revision="bb047df73a28439631d0d925b7646fedce996d33" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="digicap_screensaver" path="vendor/skb/prebuilts/digicap_screensaver" remote="skb_prebuilts" revision="c0dd7b793c2560f0bb6971c55443811cf105c614" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="digicap_zemkids" path="vendor/skb/prebuilts/digicap_zemkids" remote="skb_prebuilts" revision="2cbccfe1013f72f925b7c920afd70bbf44f57750" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="hal-interface" path="vendor/skb/framework/hal/interface" remote="skb_bcf" revision="7b34342fa26a01c86242bc7c25c1780a3802b9cf" upstream="BTF_API_LEVEL_6" dest-branch="BTF_API_LEVEL_6" groups="skb_btf"/>
<project name="hal-testsuite" path="vendor/skb/framework/hal/testsuite" remote="skb_bcf" revision="f2fb57ca3d76ddefdebb7be662ca89f56c28039c" upstream="BTF_API_LEVEL_6" dest-branch="BTF_API_LEVEL_6" groups="skb_btf"/>
<project name="kernel-configs" path="kernel/configs" revision="de0acd55a148e1f637ada24b9ec5a71f5b7877c1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="kernel-tests" path="kernel/tests" revision="eb91f7a42c2bcafba2d72cc4fc35a5ed18f12c4f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="pixtree_ads" path="vendor/skb/prebuilts/pixtree_ads" remote="skb_prebuilts" revision="a4dbe6d4c089d90be20483152f30600ac997bcbc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="pixtree_mlr" path="vendor/skb/prebuilts/pixtree_mlr" remote="skb_prebuilts" revision="50f66015e9a87faf23a77edacfef3066b59ede70" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="pixtree_multiview" path="vendor/skb/prebuilts/pixtree_multiview" remote="skb_prebuilts" revision="b95d0072469d96ce4de487e020650aefc05396c4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="platform-art" path="art" revision="a3da03f27531d5455f462e61860c1ba70f16cf9f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-bionic" path="bionic" revision="06cec80ecf95eecfe86cc797382c6cca50d4bb56" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-bootable-recovery" path="bootable/recovery" revision="f4d4ed30cd70ac2fb5f4ed0094098b28fad5e8e3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-build" path="build/make" revision="ad6c5bcab96aa901a0b0c1b5ee998c08dca6bd05" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4">
<copyfile src="core/root.mk" dest="Makefile"/>
<linkfile src="CleanSpec.mk" dest="build/CleanSpec.mk"/>
<linkfile src="buildspec.mk.default" dest="build/buildspec.mk.default"/>
<linkfile src="core" dest="build/core"/>
<linkfile src="envsetup.sh" dest="build/envsetup.sh"/>
<linkfile src="target" dest="build/target"/>
<linkfile src="tools" dest="build/tools"/>
</project>
<project name="platform-build-blueprint" path="build/blueprint" revision="12bcfa5e9b104e2fceaf6a5207af0f718b01d96a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-build-kati" path="build/kati" revision="7295712444f9e66fd0f52a298c1c39ccb0194ad4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-build-soong" path="build/soong" revision="3faec0d31b06e7ab69adc70e856ae8ce22dc2e2f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4">
<linkfile src="root.bp" dest="Android.bp"/>
<linkfile src="bootstrap.bash" dest="bootstrap.bash"/>
</project>
<project name="platform-compatibility-cdd" path="compatibility/cdd" revision="ea4ae2be066b0d4456d8e244191e336720ec2ad6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-cts" path="cts" revision="26858e4353f9c22a65545402af055913beddcdc9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-dalvik" path="dalvik" revision="9a1d3ec50905d5dabbd1ce393e5715df43cc3d1e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-developers-build" path="developers/build" revision="6e74514dfd0489fa1917f0bd11a012897a1b34f3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-development" path="development" revision="98f649d3eafc4c5c9c5bccc6cf7500d345405ed3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-aac" path="external/aac" revision="49735b01e00c4223f8ee1b958ba2ed8b2eb1d851" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-adeb" path="external/adeb" revision="2acddb3f946f381d4bfd5764e2a8e8263cce37fa" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-adhd" path="external/adhd" revision="068d7ff1228db05a89b69066f37816d76275fdf3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-android-clat" path="external/android-clat" revision="1ccc24ce260cf949ddb0bc6994c49723ac2ecf7b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-androidplot" path="external/androidplot" revision="b999712946d5141812fa2456e652db6b818d439e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-ant-glob" path="external/ant-glob" revision="45461635647e5481fa67473795782ce232e44fe1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-antlr" path="external/antlr" revision="f207c52043d762d9cfbfd87986b5194c855a318a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-apache-commons-bcel" path="external/apache-commons-bcel" revision="50e755197cd5de9d584414616d6d48877c92c649" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-apache-commons-compress" path="external/apache-commons-compress" revision="5334065cacdd3d1af2688d4617918ec0460708e1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-apache-commons-math" path="external/apache-commons-math" revision="f30081520947ace21933c4f6ade062152c9b99f3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-apache-harmony" path="external/apache-harmony" revision="b115c18dcfcc7433d89826f86a1f5889d3a6e37f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-apache-http" path="external/apache-http" revision="952e3cf27f86ef4e797ba76d0ee108aae3d132fe" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-apache-xml" path="external/apache-xml" revision="2e0b59453e964e77dc2a6e4e1ea13baf03f690e9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-archive-patcher" path="external/archive-patcher" revision="efcfb5be6f5eb4ae6b6cc755f997df055bc7b9ae" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-arm-optimized-routines" path="external/arm-optimized-routines" revision="0cb9739fdecbc11df2456807d8de81517b957a29" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-autotest" path="external/autotest" revision="b2010fc2ff94af33259503aa28daa6eb70ff4f2d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-avb" path="external/avb" revision="119251268c594d115a1eff31b3ec32108b88b593" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-bcc" path="external/bcc" revision="db83b156a85bf531c967adb00e649d55d7238dc7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-blktrace" path="external/blktrace" revision="9c82183ae7fb7dc4db787b8796c652a732b4d552" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-boringssl" path="external/boringssl" revision="98697a9a252a4146c61fbb86169b698d71da165d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-bouncycastle" path="external/bouncycastle" revision="0f3518b026db034e671ce404372db92de5d55cfd" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-brotli" path="external/brotli" revision="e1fc10a642a91c85afb8cba684b75421c53c2288" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-bsdiff" path="external/bsdiff" revision="79d0acf62e249d4d3b38cd41e5b47bdee336145a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-bzip2" path="external/bzip2" revision="1b9ad0911e00ef427383a47c908c1eba642e2728" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-caliper" path="external/caliper" revision="fed431afe2537c1d6c4930d58fe71ff0ca084c0b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-capstone" path="external/capstone" revision="f1f1cbc054db7021d4167a96b55783e087e1b7b4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-catch2" path="external/catch2" revision="bcfbb791d09e390fb545c03ca002e570f764d960" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-cblas" path="external/cblas" revision="61ee00692011385347a5dd1ad872556899a5cf7a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-chromium-libpac" path="external/chromium-libpac" revision="2dadcc1c644dd0659e70ff4a318bc6074f06df78" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-chromium-trace" path="external/chromium-trace" revision="f4e722b911fcc6f7164026432de62a02ea3460fb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-chromium-webview" path="external/chromium-webview" revision="5e34b35a24985062386376b8a85cd2576fe6067e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-clang" path="external/clang" revision="8343f599c9e1dda8e6c1bb779af323a673a052f9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-cldr" path="external/cldr" revision="1a85e3902da68636ec8ae978935ef144b7ac0840" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-cmockery" path="external/cmockery" revision="9199c7bfafefea32d1884182fa655b6e4578c1c4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-cn-cbor" path="external/cn-cbor" revision="d42fc3b49cda5c21aee74f0ec7bd06e1bcab8731" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-compiler-rt" path="external/compiler-rt" revision="570d57488d3e0dd5652b8482d63a1fdbe77d37cd" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-conscrypt" path="external/conscrypt" revision="292a0b54b8d32c092734f401c44bcc26b6bed9ac" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-crcalc" path="external/crcalc" revision="e4b2d03505a4f1b6ea42ba026fb05e996de6256b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-cros-system_api" path="external/cros/system_api" revision="38114471918da3af3eee5b26c4e1d7d93517af5b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-curl" path="external/curl" revision="c16c4b9bb9c38c8dbd9d5592ff9514a0b7a96283" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-dagger2" path="external/dagger2" revision="c4e59f861da9bac6beba095dad61a2443998c9dc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-deqp" path="external/deqp" revision="9a91222da681fa09e277897cb335e7ab269742d8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-deqp-deps-glslang" path="external/deqp-deps/glslang" revision="91b452070b219d80a82d98deb46c1514dc67f4b8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-deqp-deps-spirv-headers" path="external/deqp-deps/SPIRV-Headers" revision="33de1aef825029c0cf7927a72df63ebe79745c6f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-deqp-deps-spirv-tools" path="external/deqp-deps/SPIRV-Tools" revision="2e6244127648ea760172bf07ecf687a59ee7bd17" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-desugar" path="external/desugar" revision="67a575a8a97e134bd90b9d3b7570816668fbf4b1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-dexmaker" path="external/dexmaker" revision="eb1081adb59449e3d280cad576f80ae226b027aa" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-dlmalloc" path="external/dlmalloc" revision="3a9d0af27a9f8fe533931a9e7ca843fd8e5b54f1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-dng_sdk" path="external/dng_sdk" revision="c285687bc4085efe72e6c09485f8b93dcee738a4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-dnsmasq" path="external/dnsmasq" revision="8e9578cd0779d081a1a56f575bc631a11a426a41" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-doclava" path="external/doclava" revision="60c1a9f10eab6a82d53ef4db65525b5bfe12de62" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-dokka" path="external/dokka" revision="68f88bd53a3ca988de051469b6b5bc6f383d83a3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-drm_hwcomposer" path="external/drm_hwcomposer" revision="482ad9a71e6667bc291a7900bf174a92cfab775d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-droiddriver" path="external/droiddriver" revision="b0838843e019a232f9a439f895a658f58a369bd0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-drrickorang" path="external/drrickorang" revision="8f0f838b123a0e6cd05b1db06f20d1e50d8389c8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-dtc" path="external/dtc" revision="74c10f3bbd651db07a40609b085f785b470d9bb2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-dynamic_depth" path="external/dynamic_depth" revision="ba6dbda80afea23fcb1e996dcf0dfb7b39283144" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-e2fsprogs" path="external/e2fsprogs" revision="47e3eb9aeacca10d8f77dea2ac8c6e7aee36c338" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-easymock" path="external/easymock" revision="afd503b419c6c25d6804e137f2642217f10ee980" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-eigen" path="external/eigen" revision="cf47824652b817dd4f12e81e4e0ba33225e46777" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-elfutils" path="external/elfutils" revision="76a46f02a97f7d0d8ee334e1fbdb981757a7f50c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-emma" path="external/emma" revision="c2aa4d22fc24295761a9c588836531a7b3d3d519" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-epid-sdk" path="external/epid-sdk" revision="7d6a6b63582f241b4ae4248bab416277ed659968" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-error_prone" path="external/error_prone" revision="293052176003db358872bc7391b0522b7a90b6d1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-expat" path="external/expat" revision="992f142ff0a49c63fdbc54d4a71f6b51a3ddc7d7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-f2fs-tools" path="external/f2fs-tools" revision="6225390356ca09449da9d65d0306b1f43099fa62" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-fdlibm" path="external/fdlibm" revision="3eea558350ee7509b210f3bfa91bb9f318121e31" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-fec" path="external/fec" revision="7049b92008752b4f939425ad91bf2aea86133216" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-flac" path="external/flac" revision="5751895771522cda77630a59274c33cffcc2f476" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-flatbuffers" path="external/flatbuffers" revision="24a2547fa55ca4aeb243021ba8ce72099b9b4c6b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-fonttools" path="external/fonttools" revision="3573c3e336f800513596dce38d86abf12ddb25df" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-freetype" path="external/freetype" revision="3d18aea62aad363102c7e6520fec0c0d2b15794f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-fsck_msdos" path="external/fsck_msdos" revision="909cef0d8e47dcedd5a88bc2b66fb242e3e772cb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-fsverity-utils" path="external/fsverity-utils" revision="9851db065823f9fbb109fb4990323cd468da940c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-gemmlowp" path="external/gemmlowp" revision="18d2e95977453f4c06f999efe21301f5844fafa9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-gflags" path="external/gflags" revision="0ff6b6b12c67175a1573050e2ded5f7951b989ea" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-giflib" path="external/giflib" revision="341c85ed68d932afcdd4481d361d9c1e65b453e2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-glide" path="external/glide" revision="bd0082947a4c7b0058049c155d3c2517d462cc81" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-golang-protobuf" path="external/golang-protobuf" revision="f41fad3594ed04ed21267e8b9070098a092ffcf3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-google-benchmark" path="external/google-benchmark" revision="91c277079ad177b9ce43a45e8848560d9c8570cd" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-google-breakpad" path="external/google-breakpad" revision="05728773737deb58a10cdbe29750152c13e400bf" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-google-fonts-arbutus-slab" path="external/google-fonts/arbutus-slab" revision="6a62a3a7283256e86faac4b4830e224f64946838" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-google-fonts-arvo" path="external/google-fonts/arvo" revision="bca8c9b2d370ba24ac0280d674b063f647a038bd" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-google-fonts-carrois-gothic-sc" path="external/google-fonts/carrois-gothic-sc" revision="344f772c902ad9f1097f74ee86540e13e6a0a047" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-google-fonts-coming-soon" path="external/google-fonts/coming-soon" revision="6528b7c529714c6982f547844c2c6ae7330be425" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-google-fonts-cutive-mono" path="external/google-fonts/cutive-mono" revision="32d5199d69463d2bec5d744ce76e38d756d8edeb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-google-fonts-dancing-script" path="external/google-fonts/dancing-script" revision="23b7015fb197f99ab9833b4dd29ada3886fede6d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-google-fonts-lato" path="external/google-fonts/lato" revision="139c627f77933688eeda9c16a575c1421af08808" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-google-fonts-rubik" path="external/google-fonts/rubik" revision="4a650db6c054b9b328eb1364d217a82296143d25" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-google-fonts-source-sans-pro" path="external/google-fonts/source-sans-pro" revision="ea1024073315464fc4ce2c5c0fccaf2ace8e18ac" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-google-fonts-zilla-slab" path="external/google-fonts/zilla-slab" revision="11c07b19edec7867860296950b14cf7b687240bd" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-google-fruit" path="external/google-fruit" revision="002c22e5f2dc9030d0b414a4fce547d9e30e0644" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-google-styleguide" path="external/google-styleguide" revision="749f7ae008c0d2dd9767fdfe202e6873e864a956" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-googletest" path="external/googletest" revision="c871e1df34e148591dcb7a45684cfaa561d09771" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-gptfdisk" path="external/gptfdisk" revision="43858e637cab22aa51e4e5c5ce4fea6dca72fb39" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-grpc-grpc" path="external/grpc-grpc" revision="e0b52d97439eeb05d8ae81cfb9ff5599d35c2ac9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-grpc-grpc-java" path="external/grpc-grpc-java" revision="9b4f1a6db99b7cb7d46320e25e32317853b500dc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-guava" path="external/guava" revision="6501bf9c8011e09d21905a4cf263d6f5625d1465" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-guice" path="external/guice" revision="0cb6b120e56be5ac654ef6bc0a9bf1d71905193f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-hamcrest" path="external/hamcrest" revision="3d96516e09640e606da166e1dff54fb65c9a3a35" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-harfbuzz_ng" path="external/harfbuzz_ng" revision="5c6da22b1751b83076979c8d16f48054a7c58b19" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-honggfuzz" path="external/honggfuzz" revision="b7bc4c1a1a355ba5f92bd70520eb2af461324a14" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-hyphenation-patterns" path="external/hyphenation-patterns" revision="e5b0bea19621cc2467eca1d7ccbaf2b69f667862" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-icu" path="external/icu" revision="b46524157b29229c3a363f36b338523f4cbd66d4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-image_io" path="external/image_io" revision="135f7c04ae98ce694efcfc6d9a0d2bc38f4c3653" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-imagemagick" path="external/ImageMagick" revision="99ea11c1088f282342625d806885715ce0c8414e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-ims" path="external/ims" revision="fe28bba97c0754b1fa057a55609ec86c7ccb1d24" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-iperf3" path="external/iperf3" revision="43306ae1c85a53d3efeb20bff0e11cb7377df2c0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-iproute2" path="external/iproute2" revision="305dbada90d693b92f060b535941cceb38803fe1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-ipsec-tools" path="external/ipsec-tools" revision="21841d18260f3247c0189c5157169c862632f0ec" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-iptables" path="external/iptables" revision="6938ab6bbf9d67c78f4221a866624ea3a8fdd38e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-iputils" path="external/iputils" revision="2c7b625904073fc96ab12e78a4ee6901c266f1d5" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-iw" path="external/iw" revision="4b78b765daf510d829d5f84f70ec059a82fad312" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-jacoco" path="external/jacoco" revision="93068ff728a7916816e7bbf832b05c717a106c26" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-jarjar" path="external/jarjar" revision="86f27246919d505829a3ccb4f021fe05d182edc1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-javaparser" path="external/javaparser" revision="070ce799991ca3fb534c78ea92bc3d901baf992e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-javapoet" path="external/javapoet" revision="5110124a043357890d3e39b8452b0f0d4f2434d5" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-javasqlite" path="external/javasqlite" revision="c093f72b18ff45bd66c8884ef667399aa5891b9f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-jcommander" path="external/jcommander" revision="c4d97985b3787276d6b391510250246c9ca94541" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-jdiff" path="external/jdiff" revision="833bb881bfdaa26f1148cc670c1bc374237a9126" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-jemalloc" path="external/jemalloc" revision="e3ff6769f8262841c98245e21b96dc67536759dc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-jemalloc_new" path="external/jemalloc_new" revision="c10a6b7597eee4f1fa0319d1d7444efe7ef1d8a6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-jline" path="external/jline" revision="478835d3c4603b43c28feb80912ff33f2c6811a6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-jsilver" path="external/jsilver" revision="241cd1b197ee8e520aa6b04f277c3b29a2ff0fe4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-jsmn" path="external/jsmn" revision="0ffcf7ec931258475f9585b808f45f1b388bfb80" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-jsoncpp" path="external/jsoncpp" revision="ef504fb429de168304bd227f421848adc0d8f325" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-jsr305" path="external/jsr305" revision="7b129a25432c1a1a3d1919499d8e2f583c753b8d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-jsr330" path="external/jsr330" revision="4221d13d2c4079d3299c1d3265ed93564b84c78b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-junit" path="external/junit" revision="b9c79460f7b94f7ec96a899cb60f46e44b78cce4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-junit-params" path="external/junit-params" revision="ed4bc1eedea9e248f690ed682e4bd1b65863268d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-kernel-headers" path="external/kernel-headers" revision="05215268d71368ebeab8238a512124cda35491a7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-kmod" path="external/kmod" revision="a373f23216120dfa63ec6613ec99639880e35505" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-kotlinc" path="external/kotlinc" revision="4f7a87e483094e0819bafc63e9f8ef3a93c26a03" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-ksoap2" path="external/ksoap2" revision="6f08c590bd21f8cf228b71b1423f010cad243b06" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libaom" path="external/libaom" revision="927836483141500bff866cfd6492245318cc0550" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libavc" path="external/libavc" revision="fff822b732ebc20d913ea3cebe8808490b5fc4ba" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libbackup" path="external/libbackup" revision="be853756f8a215492b11ae545206d12b64d3a03c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libbrillo" path="external/libbrillo" revision="d4a88f4821ed402c6515d3cf5442a90c95c529e6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libcap" path="external/libcap" revision="2db20a0a41de7cf42cc78f4c8a9b0ef2ed47f6b7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libcap-ng" path="external/libcap-ng" revision="e17ed85e2a3b4691efd6975a02f8e56277cc93af" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libchrome" path="external/libchrome" revision="adc5c3d79d629fdb7e95ba1d05fe5195df11a116" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libcups" path="external/libcups" revision="19ed2a257fd7dfe5cee729712b6abd76e82dd0b3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libcxx" path="external/libcxx" revision="29cbbe6156a5092438597c6b81a9ef55ef8d2949" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libcxxabi" path="external/libcxxabi" revision="a13dc9a5c69d05d8f285b0ab52e7b1ebadf4dc50" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libdaemon" path="external/libdaemon" revision="433dd14cb58a66737e158ad1331c02162a80f43f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libdivsufsort" path="external/libdivsufsort" revision="abb3a16c4986c5f7dda62580c4f53c1930d4d1b9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libdrm" path="external/libdrm" revision="2493ca265742b83a11531856451849ccf8c27f9f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libese" path="external/libese" revision="6b796cbcd37992280254d8aadc0134ac2e2a12f8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libevent" path="external/libevent" revision="7b67f806735671bbf49cc4cd74c59c7c105ce8e2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libexif" path="external/libexif" revision="385b3070c1483306fa4c9df74310ec98ad9a4e9c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libffi" path="external/libffi" revision="699c661a0b644dff59fc4731f937b1d60719d5c8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libgsm" path="external/libgsm" revision="1321c574befc82fd21a8ac38d36e1da1f3ffb336" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libhevc" path="external/libhevc" revision="6de7a93a5bde1a274eb1862aaaf515c1c5c57a7f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libjpeg-turbo" path="external/libjpeg-turbo" revision="94a6b62bcb956bc4bf669945bd11eee9ee1e6551" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libkmsxx" path="external/libkmsxx" revision="7fa58fa14436676f36c62bead0471c2e367d0af0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libldac" path="external/libldac" revision="93195ee38bd08ea8d9f87cbfa550635923f213de" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libmpeg2" path="external/libmpeg2" revision="89fdf58ed9b7abaa6379ec81a674f150a4a3aa89" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libmtp" path="external/libmtp" revision="cbe00e33b0314fdcf19b967ecbbaf294ed7701b7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libnetfilter_conntrack" path="external/libnetfilter_conntrack" revision="a44a0c25fa5eb2575df464bd4d9e3e5c7da9ccf6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libnfnetlink" path="external/libnfnetlink" revision="ac537e1d43625a99d8b266a362f4735762a42b66" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libnl" path="external/libnl" revision="173d924eceaa33fe7f731dfc692dd1e1cace80f3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libogg" path="external/libogg" revision="d03fa44a8b3a0e94ec336c73025914eb515c9265" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libopus" path="external/libopus" revision="fcc38fd8cc63302c151a33819701075cd4cc9f6f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libpcap" path="external/libpcap" revision="1974a6a92997523e1347f939a87ceb7c8339dd90" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libphonenumber" path="external/libphonenumber" revision="085c5ca0523fb92ddbf690e4423b9b6e00d943c4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libpng" path="external/libpng" revision="5aff8307d1e1b29edb289ba676233df51436dfc6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libprotobuf-mutator" path="external/libprotobuf-mutator" revision="19b7bf3edcedaea88dff58cc0d0bd595846a9db5" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libtextclassifier" path="external/libtextclassifier" revision="55a7382bc003e2d8cc7c989fa44d15dc3da319a7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libunwind" path="external/libunwind" revision="689a2af196d2de66803f91dd224e423252d7f171" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libunwind_llvm" path="external/libunwind_llvm" revision="6352e01a22119b918b6bc30e5882b5a6f81cff80" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libusb" path="external/libusb" revision="e486a629e38d567d271f38f50deeccdac6b7fc62" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libusb-compat" path="external/libusb-compat" revision="c9943b468b27de46dc8a039d8e9973f442af0b8b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libutf" path="external/libutf" revision="608c8fc0c45bcfefa6b6e48d5ecff190ed87a96a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libvpx" path="external/libvpx" revision="fff265b1dbc63f28c367f01a920ed7e6166e6eef" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libvterm" path="external/libvterm" revision="2caab416f758b648c4034e9f22cb7b76c37203f0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libxaac" path="external/libxaac" revision="d098d22eeb073bbc2bd917c4472248b464bb9a91" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libxcam" path="external/libxcam" revision="ecea4993be3fdd0bb18255484158104e7a0268a0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libxkbcommon" path="external/libxkbcommon" revision="c74616faf095670759d130f9856c3ac3f0f639aa" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libxml2" path="external/libxml2" revision="e040d79711a7aabe472b9be796d57d4ef9006a19" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-libyuv" path="external/libyuv" revision="2db5718acece211b3d42a90e52a2cb49078011a3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-linux-kselftest" path="external/linux-kselftest" revision="9d6eccd1c0bac7c5ac1e61a44e9a649d60be9441" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-llvm" path="external/llvm" revision="9b8d82b598b6242eeec9c35fe696727e9769feac" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-lmfit" path="external/lmfit" revision="3d36ea54c2216475d5e21da31ee0db4af24ebed1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-ltp" path="external/ltp" revision="644dde483817f788df920f08fe587cd4b1efd92c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-lua" path="external/lua" revision="2574da328caa748be2497afb33bf47fe2f078c55" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-lz4" path="external/lz4" revision="4a2a1bbe1b0f7a75aa7b5decbb84bd7fd7463c98" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-lzma" path="external/lzma" revision="ef4369024dfe3778f0350c23117a352f9e8792ea" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-markdown" path="external/markdown" revision="41a03193095447f4ff110690171574ed8b721292" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-mdnsresponder" path="external/mdnsresponder" revision="ef76ab62ad22ba6c589e47099550dc3da0e803c9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-mesa3d" path="external/mesa3d" revision="63d88d3b2dde7db2ae0ff382fe5d9fde1358740e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-microsoft-gsl" path="external/Microsoft-GSL" revision="d4e54c121f49d73c9e18aff087ce3dbafc2eab47" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-minigbm" path="external/minigbm" revision="676623b06ff2ccf44f5b859d091e5281235af628" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-minijail" path="external/minijail" revision="47c0fe93a41d0388c1f7a84de850820ec7326674" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-mksh" path="external/mksh" revision="e10ab3670da4b5b7d69f425d7b603cb1195e2f45" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-mockftpserver" path="external/mockftpserver" revision="1f487440520b7264f9134079441bce0adcf05af0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-mockito" path="external/mockito" revision="48fe6754c6d2c693310aa2c8667c9e232c152c1a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-mockwebserver" path="external/mockwebserver" revision="fd6ec7942c7b35516528cc90cc569cc274b001a6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-modp_b64" path="external/modp_b64" revision="4b8457442799a0134f80b91d8dc4a888a3526d44" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-mp4parser" path="external/mp4parser" revision="91052b1c78aaf57b0db28a0b1e4f7b91e5d8fda6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-mtpd" path="external/mtpd" revision="ca7860c5d1284f84e77ad850441b8bb00d1f4625" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-nanohttpd" path="external/nanohttpd" revision="9e6fdd3de9cf7ebc3a16c614147a28e63e62485e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-nanopb-c" path="external/nanopb-c" revision="872074ccde1d0da259e276d38eb052d2cd051408" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-naver-fonts" path="external/naver-fonts" revision="37ba854a88b1721057585111c7a1d7e5fd02b556" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-neon_2_sse" path="external/neon_2_sse" revision="7dff91633c4faf01e78427a0d1626853d96289ab" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-neven" path="external/neven" revision="a1182cb5e3ed263807e0c2233725874819411bce" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-newfs_msdos" path="external/newfs_msdos" revision="6cbd5a634d77914c907cdc00b5bb9fdb1fbc438d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-nfacct" path="external/nfacct" revision="da41b2d4c2089f96a7fcb81a8b686046e635da7d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-nist-pkits" path="external/nist-pkits" revision="5b6f1ee982bad06f7ba334df5b0584a59deba7b3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-nist-sip" path="external/nist-sip" revision="d0a7687d3a0fff06ea6c1fe7d11cbff9864beb99" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-noto-fonts" path="external/noto-fonts" revision="cc5b6cd30dd72c6337c94b897f293429881d46e2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-oauth" path="external/oauth" revision="2f79a0fdace446afd17a6b539b391be92214fd47" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-objenesis" path="external/objenesis" revision="a9381064619cdd7671f6e1200c3a7b9ecae3f8de" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-oj-libjdwp" path="external/oj-libjdwp" revision="e5c6f9d3821110df3781a8e9efbdada1305ab6b7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-okhttp" path="external/okhttp" revision="c74e7275c41141c75c863aeb514453307ef0cfe4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-one-true-awk" path="external/one-true-awk" revision="c1208415a3a2629b462f1826bc9a25d0bbbdbfdf" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-opencensus-java" path="external/opencensus-java" revision="610a17c2139830070c0dc56540d35aeb64222ec7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-openssh" path="external/openssh" revision="b89310140157cfdbdc10f1b6583d10777e0f7159" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-owasp-sanitizer" path="external/owasp/sanitizer" revision="9690b9149ee4acb478242eac4c176e09b226e6a6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-parameter-framework" path="external/parameter-framework" revision="a20e7087eaa8d95ff82f1777f0c21a836608fc57" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-pcre" path="external/pcre" revision="9bfe4731e753c5e605a03889a25564b889648762" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-pdfium" path="external/pdfium" revision="e0719dae86e45f46c78258828851881c90f54261" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-perf_data_converter" path="external/perf_data_converter" revision="f4ff85768cb3cd10d112939c358eee479f09dd00" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-perfetto" path="external/perfetto" revision="c4161c4aa879b8169685efcc6d3775e88ccc0a1b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-piex" path="external/piex" revision="266dae4948aa714201a4fec8cf1e04400a30a65e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-ply" path="external/ply" revision="86d9e5d12a18f1e9ee822944646ee11e5937ea6f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-ppp" path="external/ppp" revision="3ea5ca1afa0c45eb6bddd9a4937bc37f79f3d2cb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-proguard" path="external/proguard" revision="4049237427905fe053ec217c082ce222f9edc814" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-protobuf" path="external/protobuf" revision="10b0fd4a65a5cb1688336e6d988d20229102c88f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-protobuf-javalite" path="external/protobuf-javalite" revision="8f2ef780c041a8feed10b426eb954c2ff35c119e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-puffin" path="external/puffin" revision="bc7745523aef2d7f620ca16aa6ab11a8e38dc60e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-apitools" path="external/python/apitools" revision="9f2c4cc1426aacb15897099a6af9df82f399c112" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-appdirs" path="external/python/appdirs" revision="f26193e797c3f8f98aaa7e4afd555d2140b3fcb8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-asn1crypto" path="external/python/asn1crypto" revision="1208f0f8b78755298ebb98a9f4ce5ef76814c708" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-atomicwrites" path="external/python/atomicwrites" revision="be4fa9eb05f3e640647e30454b6f1c2625c34811" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-attrs" path="external/python/attrs" revision="9c3e89fa82d47246ab9b257d202726da133de5b2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-cachetools" path="external/python/cachetools" revision="0377d4b9d25a15e2cc4284730a551a42b7a10d22" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-cffi" path="external/python/cffi" revision="99013222844839c42437f16eace25f4e6a8a8b20" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-cpython2" path="external/python/cpython2" revision="fa37090dcba250d84c5aa7541ad37a598eecdc97" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-cpython3" path="external/python/cpython3" revision="3ef6c80ca3672b9b92dadb3a2e7314adb8fd9d66" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-cryptography" path="external/python/cryptography" revision="d45069b23a8e6d21df64d5b6f2553a7aa7ef9886" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-dateutil" path="external/python/dateutil" revision="d0da7aa65f2f29c46325bfb511aaa98790da47d3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-dill" path="external/python/dill" revision="1de25625afbfa39196b4873a3aa45f09a076a97a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-enum" path="external/python/enum" revision="9e4d9c3502331544e9d02205ab3b8df3e19f1c71" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-enum34" path="external/python/enum34" revision="51c247c15b53879958ccd94a95c403dd2a129da9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-funcsigs" path="external/python/funcsigs" revision="4f1c377691d5ea3ea7725e35bb106083a5274071" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-future" path="external/python/future" revision="b785374c2b816d432e9936782e2b214b192c73fe" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-futures" path="external/python/futures" revision="89a8fe6ab75db54c27ab073acda54b57b3a1187b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-gapic-google-cloud-pubsub-v1" path="external/python/gapic-google-cloud-pubsub-v1" revision="de91f91b3e0e8cd36ade69e16b831712e8181b5e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-google-api-python-client" path="external/python/google-api-python-client" revision="0d55ba86bf4bfdb1fdf4513e8801405a9fe8ae4c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-google-auth" path="external/python/google-auth" revision="d812ee31b10e88762eac9aeded408702e69280df" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-google-auth-httplib2" path="external/python/google-auth-httplib2" revision="f83658f8b9f7efd85af695bfdac0f00eeacfc5ed" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-google-cloud-core" path="external/python/google-cloud-core" revision="fb31d0b0d90ce27047c575c7cf7bd187d9df36e4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-google-cloud-pubsub" path="external/python/google-cloud-pubsub" revision="0d91fcf1c53d49055575bfde7c6eb24f345c307b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-google-gax" path="external/python/google-gax" revision="6654a7907460eeed423c35577b1ebdce0b94991e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-googleapis" path="external/python/googleapis" revision="48ac1fcf49fb23895e9eaa1514e3799a4e3cc6a9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-grpc-google-iam-v1" path="external/python/grpc-google-iam-v1" revision="9bd66e8ca00804a0432ffeddc50d8a552daae05e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-grpcio" path="external/python/grpcio" revision="cac720b2a4a33f52bafbe652639ae1d368be74a2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-httplib2" path="external/python/httplib2" revision="2f4eea998dae784f2c66396a73d525ba3f53bfb0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-matplotlib" path="external/python/matplotlib" revision="19ad7ac700c9cf081418aa10ea5fa9c66a6b6973" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-mock" path="external/python/mock" revision="3a5218fcb8133b8d17a197b4fcd6c63bd11341d6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-more-itertools" path="external/python/more-itertools" revision="f408bc183266f6b74c973549c9d0155d44ffda36" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-numpy" path="external/python/numpy" revision="111b7e10af77635c85bbbea1d0d35a649dc45ae1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-oauth2client" path="external/python/oauth2client" revision="942e7726e2387c58f04cad67ea76bb1cd1378af8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-olefile" path="external/python/olefile" revision="4b57860bf2c6d6eeb560d84adb20a09e3119d4d5" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-packaging" path="external/python/packaging" revision="b16fb277554ec5eb8e2fb2f9e7fedf95c60355de" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-parse" path="external/python/parse" revision="3e6bd0ef0c68250e04efab06e3d8bac9a723a79a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-pillow" path="external/python/Pillow" revision="90ec1d6e7ee5c236f62e0a374a7065657ed3c15c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-pluggy" path="external/python/pluggy" revision="476c801f6efdea24faab8e234c8802ae3f6cb1dc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-ply" path="external/python/ply" revision="a06f18c56dfe3148c43ec4ed712bba663923516d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-proto-google-cloud-pubsub-v1" path="external/python/proto-google-cloud-pubsub-v1" revision="61035093eedea6edd613d98cfc64de2edcc42824" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-protobuf" path="external/python/protobuf" revision="16d0b123e41dc05cb82bd5d7e7194e37ecca5684" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-py" path="external/python/py" revision="bdf459ce1c2c467574869af67ad3c245fea6c031" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-pyasn1" path="external/python/pyasn1" revision="e04e2eb56045b29b920620c9d1f2f50e542aad09" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-pyasn1-modules" path="external/python/pyasn1-modules" revision="60293cd065c65befce9f3ab51a9ee5be4b6adae7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-pycparser" path="external/python/pycparser" revision="775e41a49bd0233ed94f379fd99b5a5837e257b2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-pyopenssl" path="external/python/pyopenssl" revision="3d7e6f31c43fe50e1147b4cfa49fd365a71295cb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-pyparsing" path="external/python/pyparsing" revision="bf90b1fc3425729cb5768af5182a83edfeb7ba2b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-pytest" path="external/python/pytest" revision="b3cd64044963b2b0eabaf60b7bd01a47e8395d29" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-requests" path="external/python/requests" revision="11d7236da2593f0908774fd027b175f4ff3e19fa" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-rsa" path="external/python/rsa" revision="ed5cd82fc8cb4f98aafeeaad550860132c27234a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-scipy" path="external/python/scipy" revision="921f53db519df603fe9ff681a49dd18be838febf" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-setuptools" path="external/python/setuptools" revision="513ec3d6bb6f7786d02caf51720497a118b8f4be" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-six" path="external/python/six" revision="1544229cbc0b2936d0eb01b282cd901c8827e0a9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-python-uritemplates" path="external/python/uritemplates" revision="7fed8f862ab03ae9240a222a45215b4b6930467e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-rapidjson" path="external/rapidjson" revision="908d461a0bb20eafba2a2c4c0f1003d9c9ab188a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-rappor" path="external/rappor" revision="24abc025df68928ce97749b18521c4dbfa3faaf7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-reactive-extensions-rxcpp" path="external/Reactive-Extensions/RxCpp" revision="fc1046c15d9830f24db7d5b20420a7bf884c1a4a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-replicaisland" path="external/replicaisland" revision="f9d0bb69baae6a0c386e94d8c93372de3d3278c6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-rmi4utils" path="external/rmi4utils" revision="eab13882ca581b5ef579eeeca311957f5fa2eada" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-robolectric" path="external/robolectric" revision="1c247020a97732c8ed951964a41c727f0d9f16f0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-robolectric-shadows" path="external/robolectric-shadows" revision="6361005e0e3c3190f479e57b29f7ad52fdbca95b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-roboto-fonts" path="external/roboto-fonts" revision="dd67dd85255323c0e363d84ac3fc5da45981eae3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-rootdev" path="external/rootdev" revision="2b38487945c95283b77047a5470aa750af02f847" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-scapy" path="external/scapy" revision="2c6d26c6fc374a6b26b012ff4523a24e903d8329" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-scrypt" path="external/scrypt" revision="d6114db148b1ededd120de0cf2d1fc73ba1611ac" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-seccomp-tests" path="external/seccomp-tests" revision="2795191f28591534096193bf5a92124367786b88" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-selinux" path="external/selinux" revision="d4c9dbc74e2358126387303d2c8ac3d4cb08b19e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-setupcompat" path="external/setupcompat" revision="c96823b9f70d1a305a1a140121e46ade83256b3a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-setupdesign" path="external/setupdesign" revision="2c496eae34f532f86bfbbe4c2558da06e23db511" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-sfntly" path="external/sfntly" revision="6bef7e4b4133b6ff3c2993a22aba17f3d59da5dc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-shaderc-spirv-headers" path="external/shaderc/spirv-headers" revision="93474b8b1e381924a3f35c047b911400bbe7d65a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-shflags" path="external/shflags" revision="6d6812d19da2747fdbee25421af1bd3583d75bf0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-skia" path="external/skia" revision="e32c6a4f32581b03cafb260b7235f1d9b2d952ba" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-sl4a" path="external/sl4a" revision="ac701c2a59f1963c0de480796885f4fe381d376d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-slf4j" path="external/slf4j" revision="4cd3f35de15e9270f3d5822c3f04a7c2b02189ea" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-smali" path="external/smali" revision="22f98607fe36e57e17485821998a70b5886c0de6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-snakeyaml" path="external/snakeyaml" revision="5df2ff5ed7c5eebfaff21a8299019e21f648b0f6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-sonic" path="external/sonic" revision="043398f5c456fc78cd8f5f2057e3a2e767eebfca" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-sonivox" path="external/sonivox" revision="4bfcc221f03d1a00a7a79ff614f90e41ed72a286" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-speex" path="external/speex" revision="fb97af103ba6e0af885a306d1bd014dd9a6f9234" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-spirv-llvm" path="external/spirv-llvm" revision="f32dfe34b9cd7ae79520171b6f6e2f8d855eecb3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-sqlite" path="external/sqlite" revision="98f9a84e93fc0fb31980625387262ebcb452cfb3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-squashfs-tools" path="external/squashfs-tools" revision="26929f59a759b06cb01c539ba45630958a8e3a76" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-strace" path="external/strace" revision="f1cb53780e02e7a9112b4aa53a132cae53a1fa15" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-stressapptest" path="external/stressapptest" revision="4d151d9e70555f617bd5c8859d9b3857be31fde3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-subsampling-scale-image-view" path="external/subsampling-scale-image-view" revision="59fe3cb90269ed94757d37c02c7112fa6e9f78da" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-swiftshader" path="external/swiftshader" revision="308325006f3515492419bfbf12c30976a1b70493" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-syzkaller" path="external/syzkaller" revision="5ea79ae1c00598c57cc8706a4881c93507e6ba0c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-tagsoup" path="external/tagsoup" revision="5e9211080364ad4d30c5b97cf95ce825b740672a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-tcpdump" path="external/tcpdump" revision="f50b8b00f4d40eaaeb7e0e3a398d441d27e63d54" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-tensorflow" path="external/tensorflow" revision="b582373a688a4f93d5a58d66aeffa023d2954154" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-testng" path="external/testng" revision="74aac3e648e789b5f462bd42debc34a16507dbad" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-tinyalsa" path="external/tinyalsa" revision="e84b02b2bfca1b51f743ad262ca0b62504d6c6b3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-tinycompress" path="external/tinycompress" revision="4c77b6dd5f07c87b32a89b67e013fc4825d93685" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-tinyxml" path="external/tinyxml" revision="47a414e46f824c3d3d91c163db8c0e7fcb3dc8c6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-tinyxml2" path="external/tinyxml2" revision="14b323f3dee3d562b31bc6d0044e7dedbd2201b8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-toybox" path="external/toybox" revision="1e03c6d85f97833b61c5d7a9e28e835e695e9042" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-tremolo" path="external/tremolo" revision="ecb66da593feea3dca865adfa9ec3763fecbff7d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-turbine" path="external/turbine" revision="bf6b7ecbccfacab31b6961987f72e8d7e5d668b7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-u-boot" path="external/u-boot" revision="d90d5a69f9b7dc299bbefb74f4bafb43a1534a36" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-ukey2" path="external/ukey2" revision="cd9c844bd676ff9ff69a74bc49e157149a7f0918" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-unicode" path="external/unicode" revision="2cb210027e5cc5e631d1eb6f2907c4fbd8ba9527" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-v4l2_codec2" path="external/v4l2_codec2" revision="e7a24dbf9c98a7a391fa107725b4cc28b427cb37" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-v8" path="external/v8" revision="b4616666ca983583970b7dd2e30065d19f67a9a2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-vboot_reference" path="external/vboot_reference" revision="df6d6b6e5280520b096fb1f565b758948bc872ee" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-virglrenderer" path="external/virglrenderer" revision="59f85c99c1d1c7db8ca543288e12507a11f7cc20" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-vixl" path="external/vixl" revision="b6f42c3fa351cfd086f3bb6d4e91c6a7b3946dfa" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-vogar" path="external/vogar" revision="830acd878a1be63095bf710fecdd8d22f4f8449b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-volley" path="external/volley" revision="727b980e6d97b7cbbc61b987106315c7b68527f4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-vulkan-headers" path="external/vulkan-headers" revision="e11ab4647e4eb4d29987011cd2a3e3226fc45e29" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-vulkan-validation-layers" path="external/vulkan-validation-layers" revision="932fa4323a1a4147fc0df55f120dbce86554ab2c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-walt" path="external/walt" revision="a391e66652451cae0fe2ab840892a522c1fe1bbd" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-wayland" path="external/wayland" revision="138d7eae1ca3a0551510476a72990ab32fa8d0bd" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-wayland-protocols" path="external/wayland-protocols" revision="c7f2a3e1857c3fea7808e9c693c920bdbe38c777" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-webp" path="external/webp" revision="0d4066cc8c442d65cfb7c70f9ab484545f813949" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-webrtc" path="external/webrtc" revision="cf0ffc92d1efdaaacf7e2c8045af754463e34813" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-wpa_supplicant_8" path="external/wpa_supplicant_8" revision="8e45b33c8d444fda1bec60d3f9ca13107a0ea017" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-wycheproof" path="external/wycheproof" revision="9fe3e8708733ac26153048a03b1b0f83a206ea51" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-xmp_toolkit" path="external/xmp_toolkit" revision="44d7e4d00ef6da63a75bf3a4f9296872cc4d2ac1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-xz-embedded" path="external/xz-embedded" revision="51923a98b0af813e3db6a027d64471ee8710a4f2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-xz-java" path="external/xz-java" revision="bd7892bb8927360cd34805bc332039154a2110e0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-yapf" path="external/yapf" revision="45d923c40605a71867d174abcd04a1db76945651" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-zlib" path="external/zlib" revision="661c183e19d3a6848a046f1db973f5725c7f2204" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-zopfli" path="external/zopfli" revision="cf98102ba44eb494f53fc59b3fc59565e4015403" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-external-zxing" path="external/zxing" revision="65193280855e46d11bf5b44f1a7e49ec0c7bd57e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-av" path="frameworks/av" revision="b0b90ece8e450e8bdb3b288280135d47e24e550c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-base" path="frameworks/base" revision="2d9fc2c5c266134727bef0973b244194d00cc2ab" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-compile-libbcc" path="frameworks/compile/libbcc" revision="fca09e63fc6a0b8ed94b4f5b23081201220f29b4" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-compile-mclinker" path="frameworks/compile/mclinker" revision="2ac86b5c4b9404666252c40980e645a9e2a73477" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-compile-slang" path="frameworks/compile/slang" revision="da9e9f979be20e805aee2f06a0bd82887d90c85a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-ex" path="frameworks/ex" revision="4bbf496bb9b79ca7ac0a09f004c56a5b40aa2b22" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-hardware-interfaces" path="frameworks/hardware/interfaces" revision="1dd754a602594dace31a6a2045bc8e6f3bdcd1ca" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-layoutlib" path="frameworks/layoutlib" revision="e7178efb3ecd791282f16859885f10c0daeb5a81" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-minikin" path="frameworks/minikin" revision="c431df69e615cc818edc3fb157d0eb9151258bea" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-ml" path="frameworks/ml" revision="b0b9cdc9f59ff0d4df5dfb70bccf64aab727cf4a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-multidex" path="frameworks/multidex" revision="745fa74857d2833e4d2dc3b0d6ab6e6cb6ff25f2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-native" path="frameworks/native" revision="98e958aa7304c23ab9d5884a7aebe01ca0057624" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-opt-bitmap" path="frameworks/opt/bitmap" revision="e9850af1278e499e427d08dbf40244f3622bd6db" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-opt-calendar" path="frameworks/opt/calendar" revision="1aea8315ebe9cca6e9462ab02e9f4caf20c8cd58" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-opt-car-services" path="frameworks/opt/car/services" revision="91d4b8c2bbc5718637500524c48b6b94fecdaf41" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-opt-car-setupwizard" path="frameworks/opt/car/setupwizard" revision="962a30f834b8e6f060b6bfc1b05d08c972d0b59b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-opt-chips" path="frameworks/opt/chips" revision="81994513f7ca38d4b0c150d3afe71fbd2d2a1859" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-opt-colorpicker" path="frameworks/opt/colorpicker" revision="c5a2e747f97ef2456c6f3dc008ae00f759407a23" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-opt-datetimepicker" path="frameworks/opt/datetimepicker" revision="0cc1bd33ef04e91ed63d36f843a34c2141c319c3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-opt-net-ethernet" path="frameworks/opt/net/ethernet" revision="7282d58109a5ae4bf9e9d7223171af5617ec99e7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-opt-net-ike" path="frameworks/opt/net/ike" revision="c0736f6c497f1682a654a8bc1d72ff506afea72e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-opt-net-ims" path="frameworks/opt/net/ims" revision="f1c2a9b68a2debdc5f47693876f2b1a7f3d7ee8e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-opt-net-voip" path="frameworks/opt/net/voip" revision="9c0eb14158b923fff523c4e60b103dbcf6bf44ac" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-opt-net-wifi" path="frameworks/opt/net/wifi" revision="480579609774b770930a9ff7ebd03d567d9316f6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-opt-photoviewer" path="frameworks/opt/photoviewer" revision="f90e5abc27d5c6694baabfd908ac36ef2dc11f1a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-opt-setupwizard" path="frameworks/opt/setupwizard" revision="13aa8a5c41ab3453c89c9948a9b7e8b1303f12be" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-opt-telephony" path="frameworks/opt/telephony" revision="927e335389c9156cc34ee2b8aa9910ebd4f7e8d2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-opt-timezonepicker" path="frameworks/opt/timezonepicker" revision="4534b444443c8b9d4a19290471ea5b485f05789e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-opt-vcard" path="frameworks/opt/vcard" revision="5e88fd3aaadf7d2a54d1fbb7e03004775801750f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-rs" path="frameworks/rs" revision="9822b047aa4423932fa8dd9ace11cdf16d309d3b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-frameworks-wilhelm" path="frameworks/wilhelm" revision="1ddc48b76a494bb1a346db3ac21ee9a10f4fe24f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-broadcom-libbt" path="hardware/broadcom/libbt" revision="23f3a6e8adb289dfa609903126697ca6c4990120" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-broadcom-wlan" path="hardware/broadcom/wlan" revision="71f18dd0868c4871f01d0bb17f9ba05129d1163b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-google-apf" path="hardware/google/apf" revision="7c5d43915046b2d1af8930ae772c291ea28baac3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-google-av" path="hardware/google/av" revision="2575735843e3d43a6f40e6c99968582ac42ed668" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-google-easel" path="hardware/google/easel" revision="fb72d9d16252ed63d9e1aa3465101ff19ac440a3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-google-interfaces" path="hardware/google/interfaces" revision="c9e0aa4bec53caebdaa8d24abd934edd16db6271" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-interfaces" path="hardware/interfaces" revision="97c7f887477ae16d63a0d8fc2c523825a1ddb214" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-invensense" path="hardware/invensense" revision="a51c32c7d16d32462fcd2d3fc61474bb0ec56864" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-libhardware" path="hardware/libhardware" revision="da60173e142c7bd919d4bd5ad113a2ed9f93e3ba" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-libhardware_legacy" path="hardware/libhardware_legacy" revision="86d26ee18d5de516f1a48046164c9e84408a7cce" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-nxp-nfc" path="hardware/nxp/nfc" revision="947e0ba5d5f49cfd178357cf0808053ce5c45ec6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-nxp-secure_element" path="hardware/nxp/secure_element" revision="313a6535990bd70a4cfc65d8b2bf8b40372b0920" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-qcom-audio" path="hardware/qcom/audio" revision="7c9cdb7c03a2d8d0809263923de60d6086113afe" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-qcom-bootctrl" path="hardware/qcom/bootctrl" revision="aaa8a9b93d685990b6c328aec76027bbad305de8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-qcom-bt" path="hardware/qcom/bt" revision="6de1929161c4898b95a8b298bd3c9403fbbf00e2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-qcom-camera" path="hardware/qcom/camera" revision="e0642e95ed62f9270098aa548f58b05eb9eb7ae9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-qcom-data-ipacfg-mgr" path="hardware/qcom/data/ipacfg-mgr" revision="644ce1d7415430f775f99cfe2aa0ab3ad4090071" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-qcom-display" path="hardware/qcom/display" revision="3ade6ee7aa9b2555307d57f9ac80cf993ca84a58" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-qcom-gps" path="hardware/qcom/gps" revision="8525477f971ca33b56225813ad15e760cb3d1381" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-qcom-keymaster" path="hardware/qcom/keymaster" revision="ecfe142948adf4f82083d7333b6c778f3993842b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-qcom-media" path="hardware/qcom/media" revision="3dbbe8f2863bca8ad38d3a7aa74aec0e62c092f2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-qcom-msm8960" path="hardware/qcom/msm8960" revision="c25a431842a26b5756b58a9d4a42c776e0457ba2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-qcom-msm8994" path="hardware/qcom/msm8994" revision="8e0383f6f41a2c49461f381c8d066ea21b20c674" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-qcom-msm8996" path="hardware/qcom/msm8996" revision="f0e7ce67121940312eaffeda9c4add56d63bf4e1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-qcom-msm8998" path="hardware/qcom/msm8998" revision="47c6b775f99eec47a1be15d7ad36a4d2db4cbadf" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-qcom-msm8x26" path="hardware/qcom/msm8x26" revision="85c1a5282ae28663335e55ce96a4c0487de6c578" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-qcom-msm8x27" path="hardware/qcom/msm8x27" revision="8ff5c0057cbdecfa09410c1710ba043e191a2862" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-qcom-msm8x84" path="hardware/qcom/msm8x84" revision="582b414269d8472d17eef65d8a8965aa8105042f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-qcom-power" path="hardware/qcom/power" revision="c9165f0cb184fcaf6888b7921b55033e8b50836c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-qcom-wlan" path="hardware/qcom/wlan" revision="bdf118c219179889f269d784eada3667176f4ec8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-realtek" path="hardware/realtek" revision="3f7eb327198f1627d89d97b08724a9c81a4f8fc7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-ril" path="hardware/ril" revision="2cf186902037b85470713ef32d1d138ae8fce7c2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-st-nfc" path="hardware/st/nfc" revision="8efba78c1246d4b2ee5e00baca33d5126682e37b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-st-secure_element" path="hardware/st/secure_element" revision="85f476304d5458ca16c38965e3e5d8492994bdfc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-hardware-ti-am57x" path="hardware/ti/am57x" revision="90270170724d81013825feeac8f80fd89595388c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-libcore" path="libcore" revision="cd77f25ebb1261cfc3ef0d31d0635a896a130169" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-libnativehelper" path="libnativehelper" revision="bcc2b6fda49e42add4715882231215b2b3ada9d0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-basicsmsreceiver" path="packages/apps/BasicSmsReceiver" revision="12456bdb267f8837b6ca3bd4439b59820a981930" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-bluetooth" path="packages/apps/Bluetooth" revision="94366d501daefe1d24157540cb9bfc54d24cfec3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-browser2" path="packages/apps/Browser2" revision="37652f79d1a115bc2d920a68ad6846a23107c660" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-calendar" path="packages/apps/Calendar" revision="1938ad4fc2cba17bedfdb7f55760cd8132b27de3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-camera2" path="packages/apps/Camera2" revision="f7232d71b864e700da0c9a476ee03a26a1e50d3c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-car-dialer" path="packages/apps/Car/Dialer" revision="5a81748b107f070fab44dc593d81aafc805393b5" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-car-externallibs" path="packages/apps/Car/externallibs" revision="bc16257053938c32c75d502cd990b4fec5a76be8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-car-hvac" path="packages/apps/Car/Hvac" revision="68e29d345111c559fd46ac371a50a9ca6469fbde" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-car-latinime" path="packages/apps/Car/LatinIME" revision="11ce053ccc26b7f16084c8864b1a262490085593" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-car-launcher" path="packages/apps/Car/Launcher" revision="36c1f0f497682ea40cf9c954f094a5cb0b431d04" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-car-lenspicker" path="packages/apps/Car/LensPicker" revision="6f7aca1a5191ddbbf647f50d23fb9cd34addc913" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-car-libs" path="packages/apps/Car/libs" revision="8cc0cd1f258ecb5e731e3c8935616b468047f009" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-car-linkviewer" path="packages/apps/Car/LinkViewer" revision="a20936c7060b100857f8594a84c15e51da55176a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-car-localmediaplayer" path="packages/apps/Car/LocalMediaPlayer" revision="650c10e72bc13a845f3c00c56a2b39fa90680965" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-car-media" path="packages/apps/Car/Media" revision="d520ec1d352dbaacbc503ff61d2dbc52ade178ba" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-car-messenger" path="packages/apps/Car/Messenger" revision="96d067c203ea1344c4b0d202743908587fb53009" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-car-notification" path="packages/apps/Car/Notification" revision="86d11e52d3387040ef5ef07215c6dd6a43d62f23" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-car-overview" path="packages/apps/Car/Overview" revision="645ca82c123da80a1dfd48cff978fe92a73816b3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-car-radio" path="packages/apps/Car/Radio" revision="83f2221d92175434a75adf1cb0b19517b598eaa2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-car-settings" path="packages/apps/Car/Settings" revision="8fe0e42a6262403b68591bca3082516933d84cf8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-car-stream" path="packages/apps/Car/Stream" revision="37abfd98677d0dedcc286c61900b3db2da9fe6bc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-car-systemupdater" path="packages/apps/Car/SystemUpdater" revision="eda0afb194279e86d41087e8f2984fee0655e03c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-carrierconfig" path="packages/apps/CarrierConfig" revision="95074ecc6a05a86848bc8a9d3b8b03b2186ada43" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-cellbroadcastreceiver" path="packages/apps/CellBroadcastReceiver" revision="3646b8b0d83eeb2774baec93c6ee74518f30dc77" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-certinstaller" path="packages/apps/CertInstaller" revision="062594ed9f25d0208a7add7b9fc537adbd051c89" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-contacts" path="packages/apps/Contacts" revision="8a5c8a01e0a50eb8f78a82ddec5100df7ed81c23" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-deskclock" path="packages/apps/DeskClock" revision="f4a34dbb153f3790317e7c5ca61b95d2585e52ba" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-devcamera" path="packages/apps/DevCamera" revision="ac0c3f959d31b22df03ad8fc9c5c35425c3f4dd3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-dialer" path="packages/apps/Dialer" revision="05552cb09dc243995e304dcb86e9b486312953c2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-documentsui" path="packages/apps/DocumentsUI" revision="8e2637f303eca3f1a2da0bf59b208d67a760b986" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-email" path="packages/apps/Email" revision="2f553852c217821d620d19c24511f55f84ce6230" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-emergencyinfo" path="packages/apps/EmergencyInfo" revision="c6fe4e6483308733da59c3dd628df08aa70011d1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-gallery" path="packages/apps/Gallery" revision="93d4b5a37c96052cfc22ecefd2bf1e0ae48d49cc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-gallery2" path="packages/apps/Gallery2" revision="aa3033352235c276d3df5e9eacad2a5a0c626517" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-htmlviewer" path="packages/apps/HTMLViewer" revision="ba5580e4e1ac8f9f3eb1eb6338e43716ad0a70b1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-keychain" path="packages/apps/KeyChain" revision="885bc291249cb764c499ad0b5ebd32ce015d74ac" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-launcher3" path="packages/apps/Launcher3" revision="a7d3ec81c553a1d2e58be32b5a6f4807012cd677" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-legacycamera" path="packages/apps/LegacyCamera" revision="f01f73e6d950f8c2cce04cc6f0404a4cb17fa7bd" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-managedprovisioning" path="packages/apps/ManagedProvisioning" revision="3e77d4a07cff7ae760868b63f05d69cde33f6ca3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-messaging" path="packages/apps/Messaging" revision="30ca4742926f8f7e2468ee451b4c71df918b6877" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-music" path="packages/apps/Music" revision="a1f1c511703838aef7656a75ef41022d2d3c5105" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-musicfx" path="packages/apps/MusicFX" revision="161a6f2ae4bdfde1a469bdf5e66db4bbff770671" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-nfc" path="packages/apps/Nfc" revision="dc56ccfa797c213b82bde569d7aab2b767d3f631" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-onetimeinitializer" path="packages/apps/OneTimeInitializer" revision="737b0d2daabf33a458ed754e045b2f0e2b65da70" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-packageinstaller" path="packages/apps/PermissionController" revision="61b9cfdf2758ec289d6907d098df4a3277f8114f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-phonecommon" path="packages/apps/PhoneCommon" revision="bb3f2ba6bc3ce1e273394ec5c715fb693b53d344" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-protips" path="packages/apps/Protips" revision="277f2db1a9099d5aaf96d4f3ca8daaeeeeef4e6f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-provision" path="packages/apps/Provision" revision="d3aaf77c58a5886c113f88a99c6aa8f2b7873107" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-quicksearchbox" path="packages/apps/QuickSearchBox" revision="afefb469ba1de266f594827dbd92b8d5c642395e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-safetyregulatoryinfo" path="packages/apps/SafetyRegulatoryInfo" revision="8e051158d0eede62da5e56b3dad30fecb2767821" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-samplelocationattribution" path="packages/apps/SampleLocationAttribution" revision="01809642e1c7214d936c0d35301b355fe6dbfdf0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-secureelement" path="packages/apps/SecureElement" revision="4bd2e8512223f81bdea1afef1de4ccced39a62fc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-settings" path="packages/apps/Settings" revision="7e594dfb86382fc527b015f05b789303fb17a23b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-settingsintelligence" path="packages/apps/SettingsIntelligence" revision="c725f6eb67081599d68bc915b72604b350b86ad1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-soundrecorder" path="packages/apps/SoundRecorder" revision="52d1ce17a0c18fe990a80da98c61399363d1ed7c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-spareparts" path="packages/apps/SpareParts" revision="f3d46ceeecd71c5555939f32643c18c78ae7909f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-stk" path="packages/apps/Stk" revision="f76f0524319c40c3639c7a2fdd2c995144876322" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-storagemanager" path="packages/apps/StorageManager" revision="daddd18fda1200dbc769729fde834e90a8bef91b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-tag" path="packages/apps/Tag" revision="40fddd7aa57ca28842d8781c19ba9c08f1de662a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-terminal" path="packages/apps/Terminal" revision="4d4e9490fdd512668ac0d47764f3eeb19504a6d2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-test-connectivity" path="packages/apps/Test/connectivity" revision="0be3e6ffd8451b1bf03ba7a6bdb78e8247c960ba" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-themepicker" path="packages/apps/ThemePicker" revision="322c5298f4d682dfd7c56a44ba79a7b74638322c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-timezonedata" path="packages/apps/TimeZoneData" revision="52bff87fa8f9413d81d8af0d258fa4ea209f84ec" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-timezoneupdater" path="packages/apps/TimeZoneUpdater" revision="106fb74251c2f00cfe07ff3357153cb1d9954ec2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-traceur" path="packages/apps/Traceur" revision="e8009abf2e6c4a8ea4e216649e51ccfd2d9cd306" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-tv" path="packages/apps/TV" revision="28bd9f8c4e624455fbdce86f75820c0d4c9d5fe5" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-tvsettings" path="packages/apps/TvSettings" revision="a6efc84dbe81ee68be4bd5fb69ceb5a844cf1d26" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-unifiedemail" path="packages/apps/UnifiedEmail" revision="b2161491d87d7a32f18278a4c2b92549d70f8965" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-wallpaperpicker" path="packages/apps/WallpaperPicker" revision="f1e69b45bde30a055d37260012df8e951bebf491" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-apps-wallpaperpicker2" path="packages/apps/WallpaperPicker2" revision="6bcea19e3667832f65e1b8afe4ede8152ea124fd" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-inputmethods-latinime" path="packages/inputmethods/LatinIME" revision="922b0778c9c6363ac9363560ff00bdb0975d18e5" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-modules-captiveportallogin" path="packages/modules/CaptivePortalLogin" revision="fe62b3b494c5203d5447efcf9a3c4ac8b8ee0afd" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-modules-extservices" path="packages/modules/ExtServices" revision="bf7f3d0025fcdcfa9ff557caf21ab8b20dc1fe04" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-modules-modulemetadata" path="packages/modules/ModuleMetadata" revision="bf198f3182e53f3d1dc9d061f558656e59f5d4c8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-modules-networkpermissionconfig" path="packages/modules/NetworkPermissionConfig" revision="e853abe00d4b6906eee05082659fc958cbed3147" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-modules-networkstack" path="packages/modules/NetworkStack" revision="44647f52ff0cfb7bf220fd4d774430a00e6499aa" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-providers-applicationsprovider" path="packages/providers/ApplicationsProvider" revision="33d26f5eedb3d3011762ce5b2de66e931bf64b35" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-providers-blockednumberprovider" path="packages/providers/BlockedNumberProvider" revision="b573d1c96b0d84210a183dd3c0a1400025ae3b71" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-providers-bookmarkprovider" path="packages/providers/BookmarkProvider" revision="66d866abdf7184af7a98edce18012fc33c41b623" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-providers-calendarprovider" path="packages/providers/CalendarProvider" revision="960c914a6b2fd4138c3e54e8d65a645e4470a276" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-providers-calllogprovider" path="packages/providers/CallLogProvider" revision="5941bd440b92232434f03da497918cea7af43e9e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-providers-contactsprovider" path="packages/providers/ContactsProvider" revision="c6f82a6181b62c07236c54a7dab2dedfbebaf34d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-providers-downloadprovider" path="packages/providers/DownloadProvider" revision="7536cfa1047a06e451743f7d58ea191ed4408df8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-providers-mediaprovider" path="packages/providers/MediaProvider" revision="0eb8c8508851355e4a825727a938586ceb7a98f0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-providers-partnerbookmarksprovider" path="packages/providers/PartnerBookmarksProvider" revision="9c3b541b4357011de2047a2e24f92a63c6d8d8a0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-providers-telephonyprovider" path="packages/providers/TelephonyProvider" revision="c7f822647c68dc50816aed4c91f06939f8a1181e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-providers-tvprovider" path="packages/providers/TvProvider" revision="ae862e59ff8e81a079fa6b4d48cdf618b8fb14d1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-providers-userdictionaryprovider" path="packages/providers/UserDictionaryProvider" revision="f22d4e72ec78b215e7bcd47c0b2e2861fac9fc9a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-screensavers-basic" path="packages/screensavers/Basic" revision="a5080b83defd7ddf89d5d89d9ab59606dc719823" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-screensavers-phototable" path="packages/screensavers/PhotoTable" revision="ede6dd0afae1b5c7acaa2a1328e9624e157ffb3f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-services-alternativenetworkaccess" path="packages/services/AlternativeNetworkAccess" revision="ddfb1029c3ab1598845f5d6193af211b1edb287d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-services-builtinprintservice" path="packages/services/BuiltInPrintService" revision="09de2bdbfd73d64dd247b1b4e4ec80c560bdd508" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-services-car" path="packages/services/Car" revision="5da2e50d5ea9e15f5905305b05ed8016bfc62c49" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-services-mms" path="packages/services/Mms" revision="52144996744cb52bfa0985423c61df0fd3a2cb13" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-services-telecomm" path="packages/services/Telecomm" revision="e9195e06125a8de79077172036f0d7d03ac44dfa" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-services-telephony" path="packages/services/Telephony" revision="5e4b98167822efcf4e1a268f126e2ddd08721111" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-packages-wallpapers-livepicker" path="packages/wallpapers/LivePicker" revision="d3f1147aee6fd8043abe89694096951a282e962a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-pdk" path="pdk" revision="8112961f0cfa2bef459f5dd3dd77462cd6325d8b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-platform_testing" path="platform_testing" revision="22b70ad143a8b978cf478040cadf934ca7ed7ad3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-abi-dumps-ndk" path="prebuilts/abi-dumps/ndk" revision="a25b65595fb790dc80820d4392393fa539b88cd6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-abi-dumps-vndk" path="prebuilts/abi-dumps/vndk" revision="7411278a49a8d759dd59cba464f5ebd82296ba2f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-android-emulator" path="prebuilts/android-emulator" revision="e316f9edbcddcf7009d3bf6919830ec2b63854f3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-asuite" path="prebuilts/asuite" revision="4c2eaabe4b1457931ef2d0da508fa10c112c3be2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-build-tools" path="prebuilts/build-tools" revision="a58b1b57d600350c817effa2516ed36adb1bed49" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-bundletool" path="prebuilts/bundletool" revision="94fd4942e5d196d5d2dc47499e5f876c8184c8e0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-checkcolor" path="prebuilts/checkcolor" revision="c642ef358b291084a614a983081720d0ef59d6e1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-checkstyle" path="prebuilts/checkstyle" revision="a4e41fdccb2caa571f9aeb791bb0fefc06b9bb0d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-clang-host-darwin-x86" path="prebuilts/clang/host/darwin-x86" revision="70a45960daf394435ec2fabf34bc701276e522c8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-clang-host-linux-x86" path="prebuilts/clang/host/linux-x86" revision="7b1289663cd5300689f5825ef0cf9eb05081c83e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-clang-tools" path="prebuilts/clang-tools" revision="24d8778d695bdd756a307b903c4d1993ac132d2b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-devtools" path="prebuilts/devtools" revision="5cb0e278ddc2161db13318950eed2ba2c29956a9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-fuchsia_sdk" path="prebuilts/fuchsia_sdk" revision="8d3423cbce4c8a9fa631af578fda1ef0c6441abf" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-gcc-darwin-x86-aarch64-aarch64-linux-android-4.9" path="prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9" revision="be292e7b7445e3b0f62f89a6b99f04967f5d720e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-gcc-darwin-x86-arm-arm-linux-androideabi-4.9" path="prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9" revision="58641e4434ae66df0d8198a3806aed280b5f0823" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-gcc-darwin-x86-host-i686-apple-darwin-4.2.1" path="prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1" revision="b38ceb474969ba17032b3c0bf36a841140501889" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-gcc-darwin-x86-mips-mips64el-linux-android-4.9" path="prebuilts/gcc/darwin-x86/mips/mips64el-linux-android-4.9" revision="b3a68e192fbbafd3aac96de2148ca00445d7872e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-gcc-darwin-x86-x86-x86_64-linux-android-4.9" path="prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9" revision="f0534379f240db72803da273594dac64656b89a2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-gcc-linux-x86-aarch64-aarch64-linux-android-4.9" path="prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9" revision="3214a204b8149a18fa1ebca2254e407b299560f1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-gcc-linux-x86-arm-arm-linux-androideabi-4.9" path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" revision="4ce3f20ffa9c2fff30d3465f2801d10420663121" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-gcc-linux-x86-host-x86_64-linux-glibc2.17-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8" revision="53ba148ea43a70cceff101830eb44b932e6553d0" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-gcc-linux-x86-host-x86_64-w64-mingw32-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8" revision="6af64f0b67db9ba905654b8152823de21ca99154" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-gcc-linux-x86-mips-mips64el-linux-android-4.9" path="prebuilts/gcc/linux-x86/mips/mips64el-linux-android-4.9" revision="00e15925600ee0dd5f39e4a34e7870de47c13736" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-gcc-linux-x86-x86-x86_64-linux-android-4.9" path="prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" revision="8469ad0c03c97c5cc8f5501f9f331eb746bc4345" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-gdb-darwin-x86" path="prebuilts/gdb/darwin-x86" revision="7fa7affd4a3356624187b436c8a3a075421107ab" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-gdb-linux-x86" path="prebuilts/gdb/linux-x86" revision="e2ceb27f958afcc0a1c7bd16c92d168f8b7ca939" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-go-darwin-x86" path="prebuilts/go/darwin-x86" revision="812f970cf6645df291664e9f774f88750f731fb8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-go-linux-x86" path="prebuilts/go/linux-x86" revision="6b05df8c936396ff9466136ccfaf8d61f716cddb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-gradle-plugin" path="prebuilts/gradle-plugin" revision="f529b20a5af18ac9e05aa41326a82dc6cc875a5e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-jdk-jdk8" path="prebuilts/jdk/jdk8" revision="a4bcf4f04bf988955b2e492b1d85ef2378954323" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-jdk-jdk9" path="prebuilts/jdk/jdk9" revision="dfe701f045b82428c37fcd9e45d429e8d06fbd8f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-manifest-merger" path="prebuilts/manifest-merger" revision="8cf39623e459933125483d0299a41aef7bc0d364" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-maven_repo-android" path="prebuilts/maven_repo/android" revision="511a320455c2357daea28e72d0e81f4535245b21" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-maven_repo-bumptech" path="prebuilts/maven_repo/bumptech" revision="3d54faa0e71a2133e7865833d30a3a035aa7904e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-misc" path="prebuilts/misc" revision="e4d0f22c676e86ff68da9c4f294812da722af2f7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-ndk" path="prebuilts/ndk" revision="a8e57cd2cd5c69967d71ed3457a82568861b3c33" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-python-darwin-x86-2.7.5" path="prebuilts/python/darwin-x86/2.7.5" revision="0163e36dc4b60aba48f99234f9023519abbe6517" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-python-linux-x86-2.7.5" path="prebuilts/python/linux-x86/2.7.5" revision="92798e5ef70d582950e3d9fa67873de9795ab502" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-qemu-kernel" path="prebuilts/qemu-kernel" revision="94dd30986196161b0ecdf4a465dc94e42e5d733c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-r8" path="prebuilts/r8" revision="0cce9ba5c2de58ddea785c3b3bb22bd539d005a6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-sdk" path="prebuilts/sdk" revision="f695b827bbb5c949e0a82b2c2d5fa8f22ac068d9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-tools" path="prebuilts/tools" revision="8ea67fb27733ff52fd1e6ebce6f2cc6640623298" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-vndk-v27" path="prebuilts/vndk/v27" revision="41916ec6cd947a705902cb20534e83960cb7b013" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-prebuilts-vndk-v28" path="prebuilts/vndk/v28" revision="0c2cb64ca1682a67034c3163d92ae1b6e1207ec3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-sdk" path="sdk" revision="d40ca99b08984704448e04c6672ab9169e7ce924" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4">
<linkfile src="current/androidx-README.md" dest="frameworks/support/README.md"/>
</project>
<project name="platform-system-apex" path="system/apex" revision="08cc8bec6591a938b6095dc7bc541219dd2078e3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-ashmemd" path="system/ashmemd" revision="540d579f3079b1796414f12118632c6adc9387e3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-bpf" path="system/bpf" revision="ce03e13a8e28cd2e53784f0447759b7b7355ab9c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-bpfprogs" path="system/bpfprogs" revision="89c774dd2bf349c81ede1db7a599eb5cb0a43515" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-bt" path="system/bt" revision="dab9cddcee28421402be5afb0d824915ea746cfb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-ca-certificates" path="system/ca-certificates" revision="c6416488c70654f91a46ff1bce706c97389d4a8e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-chre" path="system/chre" revision="06146d54884c7a60d2419326939d0558b6d5a692" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-connectivity-wificond" path="system/connectivity/wificond" revision="2e4f97226fd858f1a01a5d32845ec8981644beed" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-connectivity-wifilogd" path="system/connectivity/wifilogd" revision="4dcae5651bcb21789929ba7f080e92e207fe5628" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-core" path="system/core" revision="3634ae29c8edf1e61a12425c278a1cd0ac08c851" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-extras" path="system/extras" revision="14ac430440fb1ee105680d84e1500be8ef9400e7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-gatekeeper" path="system/gatekeeper" revision="c9e9e63bf9147a900ae7d0a5f6b0723b8eb717cb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-gsid" path="system/gsid" revision="16530ede0d2b85e0465f0216b87d95df670a2708" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-hardware-interfaces" path="system/hardware/interfaces" revision="1e8362f536c98c2668b75b8d906fb5600babab91" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-hwservicemanager" path="system/hwservicemanager" revision="c7c5db80460b4a6d19371165941cf1caa345bc7c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-iorap" path="system/iorap" revision="441263b835fd877878b741af7a0d3965c5282130" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-keymaster" path="system/keymaster" revision="65efdbdee288c39389993a6da6d263539fae8123" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-libfmq" path="system/libfmq" revision="ebc3419c62eceeb00d9960c4810b323f2679a3bb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-libhidl" path="system/libhidl" revision="65c02b0eb0874b54f19ae408b7a4bead12ab593b" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-libhwbinder" path="system/libhwbinder" revision="df2463d2f78e1aa6889ca2168d695eba551f6cf8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-libsysprop" path="system/libsysprop" revision="efe33c9f53f833cb582a1f623d6418939519a1b6" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-libufdt" path="system/libufdt" revision="715ca232a5b4b870968eceedc332eb84cf312963" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-libvintf" path="system/libvintf" revision="57d58ff3d5db0d78bf80e8a85706f77120506a85" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-linkerconfig" path="system/linkerconfig" revision="729bc5978e09f803c12e26e377f18bd022166cc7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-media" path="system/media" revision="977975deb02d65e07870a62089f4891a6501d391" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-netd" path="system/netd" revision="b1c736ec5d04e06587ee68fb95be7f4c15cd4828" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-nfc" path="system/nfc" revision="80b19999805f8390093468fdd10626c76ce2bf6d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-nvram" path="system/nvram" revision="0f6a0aa324ba9f6197f4f9b4a26c3db4fcd2935f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-security" path="system/security" revision="6574ead72d6691b906af7a1cdd7479cf219fe49c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-sepolicy" path="system/sepolicy" revision="d3c4284673044406f654e2cd7afeaa0ff5ffd02c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-server_configurable_flags" path="system/server_configurable_flags" revision="1d7caad900cb9cc24202d8aea5387a363135b2e1" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-testing-gtest_extras" path="system/testing/gtest_extras" revision="7eae4114c5b03eb4b991167a2eacabf021f50441" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-timezone" path="system/timezone" revision="2caa43b60ced0a2f026a6d27701703579b51e2ad" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-tools-aidl" path="system/tools/aidl" revision="23dd4ea76f01eec30ac99b603982682ea5176688" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-tools-hidl" path="system/tools/hidl" revision="df179c7d547c13860f6b0cbd060fa50fc53063cb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-tools-sysprop" path="system/tools/sysprop" revision="99a0a81d73929cff8cbb3115c65eb779017e09ae" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-tools-xsdc" path="system/tools/xsdc" revision="b564858b10510e64b44e3afd4c8dffe66dc249fb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-ucontainer" path="system/ucontainer" revision="b63e91330946f9c73e1c72032cfc31d1a8c9bc8f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-update_engine" path="system/update_engine" revision="30176ddeae8a6262c321cf8080cf8194d7bde0c7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-system-vold" path="system/vold" revision="a352de1f95762adfe4efe5a9cac96bf938bd7c88" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-test-framework" path="test/framework" revision="d197e5e045630cfbcfc9313c95fcbbde61fb2bfc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-test-mlts-benchmark" path="test/mlts/benchmark" revision="f837b5a0a561fa0a96e483d7c8fae0b0ae65b5ac" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-test-mlts-models" path="test/mlts/models" revision="a92852efb52754926c69e9cdbe651de935f55349" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-test-sts" path="test/sts" revision="4ea5f5482bafb264872f66e8a188afb1b9e3289f" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-test-suite_harness" path="test/suite_harness" revision="d1dc7ca85df83c11cbce1420039e8b119f65de95" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-test-vti-alert" path="test/vti/alert" revision="2270d160e38f0623d708cce36754fe14168dce64" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-test-vti-dashboard" path="test/vti/dashboard" revision="a9bd47e4caa21d535fb89c0e6efe23fa08d25847" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-test-vti-fuzz_test_serving" path="test/vti/fuzz_test_serving" revision="6319e3d94c65669050c49c6ca570096d41823b82" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-test-vti-test_serving" path="test/vti/test_serving" revision="417ad51c260dc9d0bfc6b64e567fa67b112c1560" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-test-vts" path="test/vts" revision="fda9b4904a8f831ba657898fe9fe5cdec9125493" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-test-vts-testcase-fuzz" path="test/vts-testcase/fuzz" revision="3845288c52bf080b0c5a01005de15e11a0033254" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-test-vts-testcase-hal" path="test/vts-testcase/hal" revision="c1d9fbb134c12891dca374888d61ec0955b242f8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-test-vts-testcase-hal-trace" path="test/vts-testcase/hal-trace" revision="2695892568f8fade958ec0ec172df8f295ae4112" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-test-vts-testcase-kernel" path="test/vts-testcase/kernel" revision="2fb6198c35a0a33467a439d177d5d2b4d4652044" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-test-vts-testcase-nbu" path="test/vts-testcase/nbu" revision="0712e2a442364af77a0b1dda0adf922d1d1447bc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-test-vts-testcase-performance" path="test/vts-testcase/performance" revision="f0e5dcee43de6f9c44a3872721087d96eaa48273" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-test-vts-testcase-security" path="test/vts-testcase/security" revision="eea627799809b8983ccfb97423e1447bdca8146e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-test-vts-testcase-vndk" path="test/vts-testcase/vndk" revision="5c3af3d1069012326ad2cac89be6419b371a5ce2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-tools-acloud" path="tools/acloud" revision="a4701b3b46bef2c27ad138ff93c3ed993844e470" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-tools-apifinder" path="tools/apifinder" revision="7fa228a612a41c551ddd786c79bd84294699178c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-tools-apksig" path="tools/apksig" revision="83eec36412695949f24be9d917ed7ba26fff3f5c" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-tools-apkzlib" path="tools/apkzlib" revision="ae1086c47adc35af5c36b5f2e93afc0c2ce27a8a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-tools-asuite" path="tools/asuite" revision="e301e8ebc29a550920f2aea7d9591ed90b13080a" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-tools-currysrc" path="tools/currysrc" revision="2e5983face85bcb39a206900879e2db530765169" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-tools-dexter" path="tools/dexter" revision="71670e520938b04268283dc53cda1e167610952e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-tools-loganalysis" path="tools/loganalysis" revision="20dc959b5b29014b16cc6ad4318918d70c65c841" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-tools-metalava" path="tools/metalava" revision="edcafddcb54e149af8d4135a346501dde802fb30" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-tools-ndkports" path="tools/ndkports" revision="74fefbc2160250129cbd157272fcfb3c9ac20f18" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-tools-repohooks" path="tools/repohooks" revision="a4350d0cc24b53d77b2cea9b8a9a2e2ff9e828f7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-tools-security" path="tools/security" revision="3c5ee5d6f2f50895611eacd71a62b11efcfb0648" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-tools-test-connectivity" path="tools/test/connectivity" revision="428b0925776d925a1cb1d1c89e61c023469a87eb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-tools-test-graphicsbenchmark" path="tools/test/graphicsbenchmark" revision="ed1a7ab48149fd3c96d2dc841bea4feb3c361857" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-tools-tradefederation" path="tools/tradefederation/core" revision="6be2b995c4a23416e0bc6ddc53fce210bc2c8239" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-tools-tradefederation-contrib" path="tools/tradefederation/contrib" revision="150a6187b5c01ec10e6389888d64641272900f01" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-tools-trebuchet" path="tools/trebuchet" revision="5c74aa19df59af3292dadc6db03ffbf5235b3a9d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-tools-vendor-google_prebuilts-arc" path="tools/vendor/google_prebuilts/arc" revision="f7e95a08c24a975117746a0f36f730a48db79287" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-vendor-google_gtvs" path="vendor/google_gtvs" revision="c58c205eece77ebaf85c37591e495ad29ebc3609" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-vendor-google_vts" path="vendor/google_vts" revision="f07a8f0eb404e41b14c74df5bd7c498a68448221" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="platform-vendor-widevine" path="vendor/widevine" revision="0b4a4ee66135c2d0c3f73d3929e0f724dbd68a17" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="scm" path="vendor/skb/framework/scm" remote="skb_bcf" revision="6354afd3962791c17a770ade20276c8b165c18c3" upstream="BTF_API_LEVEL_6_android-10" dest-branch="BTF_API_LEVEL_6_android-10" groups="skb_bcf">
<linkfile src="sync_btf_src.sh" dest="sync_btf_src.sh"/>
</project>
<project name="skb_bt-services" path="vendor/skb/prebuilts/skb_bt-services" remote="skb_prebuilts" revision="464f9631a6fc29a1ec022fbf371bb043338560d0" upstream="BTF_API_LEVEL_6" dest-branch="BTF_API_LEVEL_6" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="skb_device-control-app" path="vendor/skb/prebuilts/skb_device-control-app" remote="skb_prebuilts" revision="dbd0c822c12db65c8b1d86ac60dd601029702b75" upstream="BTF_API_LEVEL_6" dest-branch="BTF_API_LEVEL_6" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="skb_device-profile" path="vendor/skb/device-profile" remote="skb_prebuilts" revision="4e584d715166a54fe056c20f47d8917663e2e7f8" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="skb_edmp" path="vendor/skb/prebuilts/skb_edmp" remote="skb_prebuilts" revision="0b92e30b29bb00b0c433043808b7d33732506817" upstream="BTF_API_LEVEL_6" dest-branch="BTF_API_LEVEL_6" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="skb_fonts" path="vendor/skb/prebuilts/skb_fonts" remote="skb_prebuilts" revision="2656f17fc0c0b1783e7aa7606dddfdd898b77986" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="skb_hlsplayer" path="vendor/skb/prebuilts/skb_hlsplayer" remote="skb_prebuilts" revision="415d10c2fd0d1194315b8a49011afa63d0754469" upstream="release/5.3.4" dest-branch="release/5.3.4" groups="skb_prebuilts,testauto" sync-c="true" sync-tags="false"/>
<project name="skb_ime" path="vendor/skb/prebuilts/skb_ime" remote="skb_prebuilts" revision="db12b158f7e0f656a6374cd3a966ef225ef7d32f" upstream="BTF_API_LEVEL_6" dest-branch="BTF_API_LEVEL_6" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="skb_kids-guide" path="vendor/skb/prebuilts/skb_kids-guide" remote="skb_prebuilts" revision="c06930386e3b3e2545f36e62b4f446c22c068842" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="skb_logsystem" path="vendor/skb/prebuilts/skb_logsystem" remote="skb_prebuilts" revision="ad8639a9176cd5ff4718a55f6d2c78889ebc5301" upstream="BTF_API_LEVEL_6" dest-branch="BTF_API_LEVEL_6" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="skb_menu-image" path="vendor/skb/prebuilts/skb_menu-image" remote="skb_prebuilts" revision="f96f332f80f416295ba0d279748826f6deb65c04" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="skb_navigator" path="vendor/skb/prebuilts/skb_navigator" remote="skb_prebuilts" revision="e685c12613edd9321d494a17e7a48c2f6aed5183" upstream="BTF_API_LEVEL_6" dest-branch="BTF_API_LEVEL_6" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="skb_rcu-firmware" path="vendor/skb/prebuilts/skb_rcu-firmware" remote="skb_prebuilts" revision="f75eece7ee4a432e4d5217c85c61ef91aa2b283d" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="skb_smartrcuagent" path="vendor/skb/prebuilts/skb_smartrcuagent" remote="skb_prebuilts" revision="7c4ad26f200bbf5ed71464d3c727caeb0b23d498" upstream="BTF_API_LEVEL_6" dest-branch="BTF_API_LEVEL_6" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="skb_xwalk" path="vendor/skb/prebuilts/skb_xwalk" remote="skb_prebuilts" revision="a232320be31194169dfdc46c3a8693bffcef9c3f" upstream="BTF_API_LEVEL_6" dest-branch="BTF_API_LEVEL_6" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="skp_animatedad" path="vendor/skb/prebuilts/skp_animatedad" remote="skb_prebuilts" revision="a497c7c13adb3e98540ac4f4e90f4d088ec986a9" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="skp_cs-lib" path="vendor/skb/prebuilts/skp_cs-lib" remote="skb_prebuilts" revision="5a751b6986800b8bcf03c650f517104b1410f539" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="skt_mpp" path="vendor/skb/prebuilts/skt_mpp" remote="skb_prebuilts" revision="5cb327016d3259014b213c0ffa83c89187fab57e" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="skt_nugu" path="vendor/skb/prebuilts/skt_nugu" remote="skb_prebuilts" revision="c51f05bc042cbc146e55bdf9bbb8bbea636b4b66" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="skt_smart-home" path="vendor/skb/prebuilts/skt_smart-home" remote="skb_prebuilts" revision="b681e94168be34c68c2308f3f2fe3e468abb03e2" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="tisquare_family-earphone" path="vendor/skb/prebuilts/tisquare_family-earphone" remote="skb_prebuilts" revision="5324b42b5e84b331204813cc9c6cd33fb32619d7" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="tisquare_mdns-manager" path="vendor/skb/prebuilts/tisquare_mdns-manager" remote="skb_prebuilts" revision="d4556dc2434221873e9761015cc971b4e47fa8ad" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="toolchain-pgo-profiles" path="toolchain/pgo-profiles" revision="01759dfb7a82934d9bc279c960445d10f5c0acbb" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4"/>
<project name="uei_quickset" path="vendor/skb/prebuilts/uei_quickset" remote="skb_prebuilts" revision="077d476da1e9e931317c89f1a63385df3e868a38" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="vendor-foxconn" path="vendor/foxconn" revision="832e63ca6def8b28773f5324e9af4d2356a3ddc3" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="foxconn"/>
<project name="vendor-mw-sptek" path="vendor/sptek" remote="sptek-syna" revision="7804929ab26fafe9595b31c8df927a4a29095247" upstream="bg5ct-android-10" dest-branch="bg5ct-android-10" groups="mw"/>
<project name="vendor-scripts" path="vendor/scripts" revision="d43a423d959fa4fbcbc62019868574ba82c53455" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="foxconn,sptek">
<linkfile src="build_all.sh" dest="build_all.sh"/>
<linkfile src="updatezip.sh" dest="updatezip.sh"/>
<linkfile src="env.sh" dest="env.sh"/>
<linkfile src="release.sh" dest="release.sh"/>
</project>
<project name="zinnaworks_push-agent" path="vendor/skb/prebuilts/zinnaworks_push-agent" remote="skb_prebuilts" revision="6bcf9d2a4f2cc577af1137b8b1ebe760ef9c4efc" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<project name="zooinnet_rtsp" path="vendor/skb/prebuilts/zooinnet_rtsp" remote="skb_prebuilts" revision="0fdfacba5efd86343d6616176590860cdb918560" upstream="BFX-UA300_5.3.4" dest-branch="BFX-UA300_5.3.4" groups="skb_prebuilts" sync-c="true" sync-tags="false"/>
<repo-hooks in-project="platform-tools-repohooks" enabled-list="pre-upload"/>
</manifest>
CSMSKBSBLT-201-Unmute-HDMI-2.patch (2,384 bytes)
diff --git a/amp/src/aal/sound/sound_api.c b/amp/src/aal/sound/sound_api.c
index 27c374c..ac3b5dd 100755
--- a/amp/src/aal/sound/sound_api.c
+++ b/amp/src/aal/sound/sound_api.c
@@ -3067,6 +3067,7 @@ HRESULT AMP_SND_SetStreamVolumeIndB(AMP_IN HANDLE hStream, AMP_IN float fVolume)
SND_STRM *pStream = 0;
UINT32 uiVolume = 0;
AMP_APP_PARAST stAppParam;
+ AMP_SOUND_DRIVER *pSndDrv = g_stSndDriver;
SND_API_ENTER();
SNDDRV_CHECKVALID();
@@ -3097,6 +3098,7 @@ HRESULT AMP_SND_SetStreamVolumeIndB(AMP_IN HANDLE hStream, AMP_IN float fVolume)
(pStream->PeerPortConn.hInterHandle == SOUND_PORTID_PASSTHROUGH &&
pStream->PeerPortConn.uiFlags == HDMI_PATH))
{
+ MV_OSAL_Mutex_Lock(pSndDrv->hDrvMutex);
#ifdef CONFIG_AMP_AUDIO_MUTE_PT_FOR_STREAM
SNDLOGD("HDMI pass through case, stream volume is set to AOUT!\n");
AMP_RPC(rc, AMP_SNDSINK_SetAoutStreamVolume, pStream->hSndSinkComp,
@@ -3109,6 +3111,11 @@ HRESULT AMP_SND_SetStreamVolumeIndB(AMP_IN HANDLE hStream, AMP_IN float fVolume)
#if 1 //tony debug
pStream->uiStreamVolume = uiVolume;
#endif
+ if( pStream->uiStreamVolume != 0 ){
+ AMP_RPC(rc, AMP_SNDSINK_SetAoutStreamVolume, pStream->hSndSinkComp, HDMI_PATH, 0x40000000L);
+ }
+ MV_OSAL_Mutex_Unlock(pSndDrv->hDrvMutex);
+
return rc;
}
@@ -3482,7 +3489,6 @@ HRESULT AMP_SND_SetStreamMute(AMP_IN HANDLE hStream, AMP_IN BOOL bMute)
SNDSTRM_CHECKVALID(hStream);
pStream = (SND_STRM *)hStream;
stAppParam._d = AMP_APP_PARAIDX_VOLUME;
-
if((pStream->PeerPortConn.ePeerType == AMP_PORT_AREN_OUT_SPDIF)||
(pStream->PeerPortConn.hInterHandle == SOUND_PORTID_PASSTHROUGH &&
@@ -3530,6 +3536,7 @@ HRESULT AMP_SND_SetStreamMute(AMP_IN HANDLE hStream, AMP_IN BOOL bMute)
(pStream->PeerPortConn.hInterHandle == SOUND_PORTID_PASSTHROUGH &&
pStream->PeerPortConn.uiFlags == HDMI_PATH))
{
+ MV_OSAL_Mutex_Lock(pSndDrv->hDrvMutex);
#ifdef CONFIG_AMP_AUDIO_MUTE_PT_FOR_STREAM
SNDLOGD("HDMI pass through case, stream volume is set to AOUT!\n");
#if 1 //tony debug
@@ -3545,6 +3552,7 @@ HRESULT AMP_SND_SetStreamMute(AMP_IN HANDLE hStream, AMP_IN BOOL bMute)
hStream);
}
#endif
+ MV_OSAL_Mutex_Unlock(pSndDrv->hDrvMutex);
return rc;
}
|
|
|
Hi Sangmin, upload to /release_by_fxn/swan_test_image/20230131_mantis1496 Thank you Dean Chiang |
|
|
Hello, Dean, Could you please build a test firmware after applied attached patches? SD only. This firmware is based on 536 branches. syna-release/ampsdk BTVSBOX-629-PCR-offset.patch Thank you. Sangmin Choi. BTVSBOX-629-PCR-offset.patch (5,369 bytes)
diff --git a/amp/src/ddl/comp_clk/source/clk_avsync.c b/amp/src/ddl/comp_clk/source/clk_avsync.c
index a80fa15..0e094b6 100755
--- a/amp/src/ddl/comp_clk/source/clk_avsync.c
+++ b/amp/src/ddl/comp_clk/source/clk_avsync.c
@@ -938,6 +938,33 @@ BOOL check_pause_pts(AVSYNC_MGR *pSyncMgr, SYNC_STREAM *pStream, BD_INFO *pBDInf
return ret;
}
+AMP_CLK_ACT check_sim_out_pts(AVSYNC_MGR *pSyncMgr, SYNC_STREAM *pStream, BD_INFO *pBDInfo)
+{
+ UINT uiRange = 900000;
+ AMP_CLK_ACT eAct = AMP_CLK_DISP;
+
+ if (check_pts_range(pBDInfo->m_uiPtsStart,
+ pSyncMgr->m_uiMaxPTS,
+ uiRange, uiRange,
+ FALSE) == AMP_CLK_DISP) {
+ if (!pSyncMgr->m_fAllStreamsReady) {
+ eAct = AMP_CLK_HOLD;
+ } else if (GET_PTS_VAL64(pBDInfo->m_uiPtsStart) <
+ GET_PTS_VAL64(pSyncMgr->m_uiMaxPTS)) {
+ eAct = AMP_CLK_DROP;
+ }
+ } else {
+ // Disable simultaneous output
+ AVSH("[%d]CHECK_%s PTS:[0x%09llX][%lld],STC:[0x%09llX][%lld], [OPT]SIM_OUTPUT(DISABLED!)!",
+ pSyncMgr->m_pAVClock->m_uiClockID, pStream->m_szName,
+ GET_PTS_VAL64(pBDInfo->m_uiPtsStart), GET_PTS_VAL64(pBDInfo->m_uiPtsStart),
+ GET_PTS_VAL64(pSyncMgr->m_uiMaxPTS), GET_PTS_VAL64(pSyncMgr->m_uiMaxPTS));
+ pSyncMgr->m_fSimOut = FALSE;
+ }
+
+ return eAct;
+}
+
VOID local_playback_res_change(AVSYNC_MGR *pSyncMgr, BOOL fDone)
{
if (!fDone) {
@@ -3175,7 +3202,7 @@ VOID dtv_check_pcr(AVSYNC_MGR *pSyncMgr, UINT64 pcr, UINT64 stc)
diff_local_clk = PTS64_DIFF_WRAP(stc, pSyncMgr->m_recent_local_clk);
freq_diff = diff_local_clk - diff_src_clk;
- AVSM("[AVS]%s(pcr:0x%x(%d), stc:0x%x(%d), diff: phase:%lld(%lld)"
+ AVSI("[AVS]%s(pcr:0x%x(%d), stc:0x%x(%d), diff: phase:%lld(%lld)"
" freq:%lld(%lld))", __FUNCTION__,
(UINT32)pcr, (UINT32)PTS64_DIFF_WRAP(pcr, last_pcr),
(UINT32)stc, (UINT32)PTS64_DIFF_WRAP(stc, last_stc),
@@ -3640,7 +3667,7 @@ VOID dtv_check_avsync(AVSYNC_MGR *pSyncMgr)
} else if (IS_PTS_VALID64(pSyncMgr->m_uiTimeFirstSample)) {
UINT64 t = avclock_get_wall64(pSyncMgr->m_pAVClock, FALSE);
UINT64 diff = t - GET_PTS_VAL64(pSyncMgr->m_uiTimeFirstSample);
- if (diff > 90000) {
+ if ((diff > 90000 && pSyncMgr->m_fAllStreamsReady) || diff > 900000) {
pSyncMgr->m_sPsp.m_uiPcr = pSyncMgr->m_uiMinPTS;
pSyncMgr->m_sPsp.m_uiStc = t;
pSyncMgr->m_uiStartSTC = GET_PTS_VAL64(pSyncMgr->m_sPsp.m_uiPcr) -
@@ -3715,12 +3742,8 @@ HRESULT dtv_check_video_pts(AVSYNC_MGR *pSyncMgr,
}
if (pSyncMgr->m_fSimOut && pSyncMgr->m_eSyncStatus == SYNC_LOCKING) {
- if (!pSyncMgr->m_fAllStreamsReady) {
- eAct = AMP_CLK_HOLD;
- goto _Exit;
- } else if (GET_PTS_VAL64(pBDInfo->m_uiPtsStart) <
- GET_PTS_VAL64(pSyncMgr->m_uiMaxPTS)) {
- eAct = AMP_CLK_DROP;
+ eAct = check_sim_out_pts(pSyncMgr, pStream, pBDInfo);
+ if (eAct != AMP_CLK_DISP) {
goto _Exit;
}
}
@@ -3954,12 +3977,8 @@ HRESULT dtv_check_audio_pts(AVSYNC_MGR *pSyncMgr,
}
if (pSyncMgr->m_fSimOut && pSyncMgr->m_eSyncStatus == SYNC_LOCKING) {
- if (!pSyncMgr->m_fAllStreamsReady) {
- eAct = AMP_CLK_HOLD;
- goto _Exit;
- } else if (GET_PTS_VAL64(pBDInfo->m_uiPtsStart) <
- GET_PTS_VAL64(pSyncMgr->m_uiMaxPTS)) {
- eAct = AMP_CLK_DROP;
+ eAct = check_sim_out_pts(pSyncMgr, pStream, pBDInfo);
+ if (eAct != AMP_CLK_DISP) {
goto _Exit;
}
}
@@ -4195,7 +4214,7 @@ VOID live_net_policy_init(AVSYNC_MGR *pSyncMgr)
pSyncMgr->m_fPcrEnabled = TRUE;
pSyncMgr->m_fPcrAdj = TRUE;
- pSyncMgr->m_iPcrOffset = 27000;
+ pSyncMgr->m_iPcrOffset = 27000*4;
pSyncMgr->m_uiPcrAdjThresh = 300;
pSyncMgr->m_iPcrOrigOffset = pSyncMgr->m_iPcrOffset;
@@ -5210,6 +5229,12 @@ HRESULT avsync_mgr_new_pcr(AVSYNC_MGR *pSyncMgr, UINT64 uiPcr, UINT64 uiStc, UIN
dtv_check_pcr(pSyncMgr, uiPcr, uiClk);
+ if (!pSyncMgr->m_fPcrValid ){
+ AVSH("[PCR]PCR:0x%08x, LastPCR:0x%08x, P-LP:%6lld, T-LT:%6d, [%d][%d]",
+ (INT32)pcr, (INT32)last_pcr, (pcr - last_pcr),
+ (stc - last_stc), pSyncMgr->m_fPcrDiscPending,
+ pSyncMgr->m_uiPcrContinueCnt);
+ }
AVSI("[PCR]PCR:0x%08x, LastPCR:0x%08x, P-LP:%6lld, T-LT:%6d, [%d][%d]",
(INT32)pcr, (INT32)last_pcr, (pcr - last_pcr),
(stc - last_stc), pSyncMgr->m_fPcrDiscPending,
@@ -5238,8 +5263,8 @@ HRESULT avsync_mgr_new_pcr(AVSYNC_MGR *pSyncMgr, UINT64 uiPcr, UINT64 uiStc, UIN
SET_PTS_VALID64(pSyncMgr->m_uiMinPCR);
}
- if (!pSyncMgr->m_fPcrValid && last_pcr && pcr != last_pcr &&
- ((pcr - last_pcr) < (stc - last_stc))) {
+ if (!pSyncMgr->m_fPcrValid && last_pcr && pcr != last_pcr /* ){ */
+ && ((pcr - last_pcr) < (stc - last_stc))) {
pSyncMgr->m_fPcrValid = TRUE;
AVSH("[AVS]PCR VALID(PCR:0x%x)!", pSyncMgr->m_sPsp.m_uiPcr);
return SUCCESS; |
|
|
Hi Sangmin, upload to /release_by_fxn/swan_test_image/20230214_mantis1496 Thank you Dean Chiang |
|
|
Hi, Dean, Could you please build a test firmware after applied attached patches? SD only. This firmware is based on 536 branches. syna-release/ampsdk/drm/widevine 0001-BTVV-5675-MAX_KEY_PER_SESSION-26-100.patch Thank you. Sangmin Choi. 0001-BTVV-5675-MAX_KEY_PER_SESSION-26-100.patch (784 bytes)
From 55208a6b04f7aff6b14fc5cd21a7871e7c612d8c Mon Sep 17 00:00:00 2001 From: Sangmin Choi <smchoi@altech.kr> Date: Tue, 21 Feb 2023 11:26:02 +0900 Subject: [PATCH] [BTVV-5675] MAX_KEY_PER_SESSION 26 -> 100 --- wvserver/inc/DRM_WIDEVINE_Server_API.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/wvserver/inc/DRM_WIDEVINE_Server_API.h b/wvserver/inc/DRM_WIDEVINE_Server_API.h index 8642d4d..0caef9a 100755 --- a/wvserver/inc/DRM_WIDEVINE_Server_API.h +++ b/wvserver/inc/DRM_WIDEVINE_Server_API.h @@ -64,7 +64,8 @@ #else #define MAX_SESSION_NUMBER 8 #endif -#define MAX_KEY_PER_SESSION 26 +//#define MAX_KEY_PER_SESSION 26 +#define MAX_KEY_PER_SESSION 100 #define DATA_PATH_TYPE 0x1 #define ALLOW_GENERIC_ENCRYPT 0x2 -- 2.17.1 |
|
|
Hi Sangmin, upload to /release_by_fxn/swan_test_image/20230221_mantis1496 Thank you Dean Chiang |
|
|
Hi, Dean, Could you please build a test firmware after applied attached patches? SD only. This firmware is based on 536 branches. vendor/skb/prebuilts/boot_config 0001-19.536.904.patch Thank you. Sangmin Choi. 0001-19.536.904.patch (139 bytes)
diff --git a/version.txt b/version.txt index 101f4b4..ec8ac7c 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -19.536.1 +19.536.904 |
|
|
Hi Sangmin, upload to /release_by_fxn/swan_test_image/20230223_mantis1496 Thank you Dean Chiang |
|
|
Hi, Dean, Could you please build a test firmware after applied attached patches? SD only. This firmware is based on 536 branches. vendor/skb/prebuilts/boot_config 0001-19.536.906.patch Thank you. Sangmin Choi. 0001-19.536.906.patch (139 bytes)
diff --git a/version.txt b/version.txt index 101f4b4..b2577a7 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -19.536.1 +19.536.906 |
|
|
Hi Sangmin, upload to /release_by_fxn/swan_test_image/20230302_mantis1496 Thank you Dean Chiang |
|
|
Hi, Dean, Could you please build a test firmware after applied attached patches? SD only. This firmware is based on 536 branches. vendor/skb/prebuilts/boot_config 0001-19.536.907.patch Thank you. Sangmin Choi. 0001-19.536.907.patch (139 bytes)
diff --git a/version.txt b/version.txt index 101f4b4..b2577a7 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -19.536.1 +19.536.907 |
|
|
Hi Sangmin, upload to /release_by_fxn/swan_test_image/20230306_mantis1496 Thank you Dean Chiang |
|
|
Hi, Dean, Could you please build a test firmware after applied attached patches? SD only. This firmware is based on 536 branches. vendor/skb/prebuilts/boot_config 0001-19.536.908.patch Thank you. Sangmin Choi. 0001-19.536.908.patch (139 bytes)
diff --git a/version.txt b/version.txt index 101f4b4..b2577a7 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -19.536.1 +19.536.908 |
|
|
Hi Sangmin, upload to /release_by_fxn/swan_test_image/20230308_mantis1496 Jerry |
|
|
Hello, Jerry, There was missed commit yesterday, so 20230308_mantis1496 firmware didn't work correctly. Could you please build again after update all repositories? SD only. Also, please apply previous patch. vendor/skb/prebuilts/boot_config 0001-19.536.908.patch And, I deleted below firmware. /release_by_fxn/swan_test_image/20230308_mantis1496 Thank you. Sangmin Choi. |
|
|
Hi Sangmin, upload to /release_by_fxn/swan_test_image/20230309_mantis1496 Jerry |
|
|
Hi, Jerry, Could you please build a test firmware after applied attached patches? SD and ND. syna-release/ampsdk MMCEI-10037-do-not-send-zero-110541.patch Thank you. Sangmin Choi. |
|
|
MMCEI-10037-do-not-send-zero-110541.patch (905 bytes)
diff --git a/amp/src/ddl/comp_aout/aout_hdmi.c b/amp/src/ddl/comp_aout/aout_hdmi.c
index fd025c9..0f1f0e0 100644
--- a/amp/src/ddl/comp_aout/aout_hdmi.c
+++ b/amp/src/ddl/comp_aout/aout_hdmi.c
@@ -1132,8 +1132,9 @@ HRESULT Aout_SetHDMIPortFmt(HANDLE this_module, HDMI_DATA_CFG *pHdmiDataCfg, con
#else
if (pHdmiDataCfg->ucMode == HDMI_PCM_PRI
#endif
- && ppath->m_hdmi_cfg.ucMode == HDMI_RAW_MAIN)
- bBitstream2pcm = TRUE;
+ && ppath->m_hdmi_cfg.ucMode == HDMI_RAW_MAIN){
+ bBitstream2pcm = FALSE;
+ }
AmpMemcpy(&ppath->m_hdmi_cfg, pHdmiDataCfg, sizeof(HDMI_DATA_CFG));
/* warning clear */
@@ -1411,8 +1412,9 @@ HRESULT Aout_SetHDMIPortFmt(HANDLE this_module, HDMI_DATA_CFG *pHdmiDataCfg, con
return rc;
}
- if (bBitstream2pcm)
+ if (bBitstream2pcm) {
Aout_WaitUnitlHDMIFormatDetectedBySink();
+ }
return S_OK;
}
|
|
|
Hi Sangmin, upload to /release_by_fxn/swan_test_image/20230310_mantis1496 Jerry |
|
|
Hi, Jerry, Could you please build a test firmware after applied attached patches? SD only. vendor/synaptics/btv-hal-impl/synaptics BAIS2-799_stop_start_trace.patch Thank you. Sangmin Choi. BAIS2-799_stop_start_trace.patch (6,220 bytes)
commit 074ffd8673e25a74ed6fb5987b996cbefe56bd85
Author: nick yoon <nick.yoon@synaptics.com>
Date: Thu Mar 16 15:20:31 2023 +0900
stop / start call trace
Change-Id: I35fa4979fe7049b0984571f58b7a18f43065ddeb
diff --git a/amp_wrapper.c b/amp_wrapper.c
index 9463516..6f277fa 100644
--- a/amp_wrapper.c
+++ b/amp_wrapper.c
@@ -25,6 +25,17 @@ extern "C" {
#include <cutils/properties.h>
+struct AMP_CALL_TRACE{
+ UINT32 call_create_top;
+ UINT32 call_create_bottom;
+ UINT32 call_start;
+ UINT32 call_stop;
+ UINT32 call_destroy_bottom;
+ UINT32 call_destroy_top;
+};
+
+struct AMP_CALL_TRACE gAmpCallTrace_main, gAmpCallTrace_pip;
+
#ifdef AMP_LOG_WRITE_FILE
FILE *logFp[2] = { NULL, NULL };
#endif
@@ -761,6 +772,17 @@ void amp_create_pipeline_top_half(AVP_HANDLE *player, bool isPip) {
synaptics_player_info *socPlayerInfo = (synaptics_player_info *) player;
ALOGD("++%s[%s][%0xd] ", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN", (unsigned int)socPlayerInfo->ampFactory);
+ if( !socPlayerInfo->pip ){
+ gAmpCallTrace_main.call_create_top++;
+ ALOGD("++%s[%s] create_count(%u,%u)", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN",
+ gAmpCallTrace_main.call_create_top, gAmpCallTrace_main.call_create_top - gAmpCallTrace_main.call_destroy_top );
+ }else{
+ gAmpCallTrace_pip.call_create_top++;
+ ALOGD("++%s[%s] create_count(%u,%u)", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN",
+ gAmpCallTrace_pip.call_create_top, gAmpCallTrace_pip.call_create_top - gAmpCallTrace_pip.call_destroy_top );
+ }
+
+
HRESULT ret;
AMP_COMPONENT_CONFIG amp_config;
@@ -985,6 +1007,16 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
synaptics_player_info *socPlayerInfo = (synaptics_player_info *) player;
ALOGD("++%s[%s][%0xd] ", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN", (unsigned int)socPlayerInfo->ampFactory);
+ if( !socPlayerInfo->pip ){
+ gAmpCallTrace_main.call_create_bottom++;
+ ALOGD("++%s[%s] create_count(%u,%u)", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN",
+ gAmpCallTrace_main.call_create_bottom, gAmpCallTrace_main.call_create_bottom - gAmpCallTrace_main.call_destroy_bottom );
+ }else{
+ gAmpCallTrace_pip.call_create_bottom++;
+ ALOGD("++%s[%s] create_count(%u,%u)", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN",
+ gAmpCallTrace_pip.call_create_bottom, gAmpCallTrace_pip.call_create_bottom - gAmpCallTrace_pip.call_destroy_bottom );
+ }
+
HRESULT ret;
AMP_COMPONENT_CONFIG amp_config;
AMP_DMX_CH_CFG output_config;
@@ -1295,6 +1327,15 @@ void amp_start_pipeline(AVP_HANDLE *player) {
}
synaptics_player_info *socPlayerInfo = (synaptics_player_info *) player;
+ if( !socPlayerInfo->pip ){
+ gAmpCallTrace_main.call_start++;
+ ALOGD("++%s[%s] start_count(%u,%u)", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN",
+ gAmpCallTrace_main.call_start, gAmpCallTrace_main.call_start - gAmpCallTrace_main.call_stop );
+ }else{
+ gAmpCallTrace_pip.call_start++;
+ ALOGD("++%s[%s] start_count(%u,%u)", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN",
+ gAmpCallTrace_pip.call_start, gAmpCallTrace_pip.call_start - gAmpCallTrace_pip.call_stop );
+ }
ALOGD("++%s[%s][%0xd] ", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN", (unsigned int)socPlayerInfo->ampFactory);
HRESULT ret;
@@ -1505,6 +1546,17 @@ void amp_destroy_pipeline_top_half(AVP_HANDLE *player) {
amp_log(socPlayerInfo->pip ? 1:0, "AMP_DMX_Destroy, socPlayerInfo->amp_dmx in");
AMP_RPC(ret, AMP_DMX_Destroy, socPlayerInfo->amp_dmx);
assert(ret == SUCCESS);
+
+ if( !socPlayerInfo->pip ){
+ gAmpCallTrace_main.call_destroy_top++;
+ ALOGD("++%s[%s] destroy_count(%u,%u)", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN",
+ gAmpCallTrace_main.call_destroy_top, gAmpCallTrace_main.call_create_top - gAmpCallTrace_main.call_destroy_top );
+ }else{
+ gAmpCallTrace_pip.call_start++;
+ ALOGD("++%s[%s] destroy_count(%u,%u)", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN",
+ gAmpCallTrace_pip.call_destroy_top, gAmpCallTrace_pip.call_create_top - gAmpCallTrace_pip.call_destroy_top );
+ }
+
}
void amp_destroy_pipeline_bottom_half(AVP_HANDLE *player) {
@@ -1648,6 +1700,17 @@ void amp_destroy_pipeline_bottom_half(AVP_HANDLE *player) {
assert(ret == SUCCESS);
// <------------------------- video
}
+
+ if( !socPlayerInfo->pip ){
+ gAmpCallTrace_main.call_destroy_bottom++;
+ ALOGD("++%s[%s] destroy_count(%u,%u)", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN",
+ gAmpCallTrace_main.call_destroy_bottom, gAmpCallTrace_main.call_create_bottom - gAmpCallTrace_main.call_destroy_bottom );
+ }else{
+ gAmpCallTrace_pip.call_destroy_bottom++;
+ ALOGD("++%s[%s] destroy_count(%u,%u)", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN",
+ gAmpCallTrace_pip.call_destroy_bottom, gAmpCallTrace_pip.call_create_bottom - gAmpCallTrace_pip.call_destroy_bottom );
+ }
+
}
void amp_destroy_pipeline_tail(AVP_HANDLE *player) {
@@ -1742,6 +1805,16 @@ void amp_stop_pipeline(AVP_HANDLE *player) {
assert(ret == SUCCESS);
// <------------------------- video
}
+
+ if( !socPlayerInfo->pip ){
+ gAmpCallTrace_main.call_stop++;
+ ALOGD("++%s[%s] stop_count(%u,%u)", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN",
+ gAmpCallTrace_main.call_stop, gAmpCallTrace_main.call_start - gAmpCallTrace_main.call_stop );
+ }else{
+ gAmpCallTrace_pip.call_stop++;
+ ALOGD("++%s[%s] stop_count(%u,%u)", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN",
+ gAmpCallTrace_pip.call_stop, gAmpCallTrace_pip.call_start - gAmpCallTrace_pip.call_stop );
+ }
}
HRESULT amp_zapping_mgr_stop_service(AVP_HANDLE *player) {
|
|
|
Hi Sangmin Choi, upload to /release_by_fxn/swan_test_image/20230316_mantis1496 Jerry |
|
|
Hi, Jerry, Could you please build a test firmware after applied attached patches? SD only. vendor/synaptics/btv-hal-impl/synaptics BAIS2-799_remove_amp_function_from_callback.patch Thank you. Sangmin Choi. BAIS2-799_remove_amp_function_from_callback.patch (7,171 bytes)
diff --git a/amp_wrapper.c b/amp_wrapper.c
old mode 100644
new mode 100755
index c4ce741..0a59606
--- a/amp_wrapper.c
+++ b/amp_wrapper.c
@@ -25,6 +25,17 @@ extern "C" {
#include <cutils/properties.h>
+struct AMP_CALL_TRACE{
+ UINT32 call_create_top;
+ UINT32 call_create_bottom;
+ UINT32 call_start;
+ UINT32 call_stop;
+ UINT32 call_destroy_bottom;
+ UINT32 call_destroy_top;
+};
+
+struct AMP_CALL_TRACE gAmpCallTrace_main, gAmpCallTrace_pip;
+
#ifdef AMP_LOG_WRITE_FILE
FILE *logFp[2] = { NULL, NULL };
#endif
@@ -394,9 +405,9 @@ HRESULT amp_dmx_event_handler(HANDLE hListener, AMP_EVENT *pEvent, VOID *pUserDa
ALOGD("++amp_dmx_event_handler AMP_EVENT_DMX_INBUFF_OVERFLOW (handle=0x%x, fulness=0x%x, size=0x%x)",
pBuffState->hHandle, pBuffState->uFullness, pBuffState->uSize );
- amp_stop_pipeline(player);
+ //amp_stop_pipeline(player);
- amp_start_pipeline(player);
+ //amp_start_pipeline(player);
} break;
case AMP_EVENT_DMX_INBUFF_UNDERFLOW:
@@ -405,8 +416,8 @@ HRESULT amp_dmx_event_handler(HANDLE hListener, AMP_EVENT *pEvent, VOID *pUserDa
ALOGD("++amp_dmx_event_handler AMP_EVENT_DMX_INBUFF_UNDERFLOW (handle=0x%x, fulness=0x%x, size=0x%x)",
pBuffState->hHandle, pBuffState->uFullness, pBuffState->uSize );
if(socPlayerInfo->playerConfig.clock_recovery_enable == AVP_IPTV) {
- amp_stop_pipeline(player);
- amp_start_pipeline(player);
+ //amp_stop_pipeline(player);
+ //amp_start_pipeline(player);
}
} break;
default:
@@ -763,6 +774,17 @@ void amp_create_pipeline_top_half(AVP_HANDLE *player, bool isPip) {
synaptics_player_info *socPlayerInfo = (synaptics_player_info *) player;
ALOGD("++%s[%s][%0xd] ", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN", (unsigned int)socPlayerInfo->ampFactory);
+ if( !socPlayerInfo->pip ){
+ gAmpCallTrace_main.call_create_top++;
+ ALOGD("++%s[%s] create_count(%u,%u)", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN",
+ gAmpCallTrace_main.call_create_top, gAmpCallTrace_main.call_create_top - gAmpCallTrace_main.call_destroy_top );
+ }else{
+ gAmpCallTrace_pip.call_create_top++;
+ ALOGD("++%s[%s] create_count(%u,%u)", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN",
+ gAmpCallTrace_pip.call_create_top, gAmpCallTrace_pip.call_create_top - gAmpCallTrace_pip.call_destroy_top );
+ }
+
+
HRESULT ret;
AMP_COMPONENT_CONFIG amp_config;
@@ -1018,6 +1040,16 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
synaptics_player_info *socPlayerInfo = (synaptics_player_info *) player;
ALOGD("++%s[%s][%0xd] ", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN", (unsigned int)socPlayerInfo->ampFactory);
+ if( !socPlayerInfo->pip ){
+ gAmpCallTrace_main.call_create_bottom++;
+ ALOGD("++%s[%s] create_count(%u,%u)", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN",
+ gAmpCallTrace_main.call_create_bottom, gAmpCallTrace_main.call_create_bottom - gAmpCallTrace_main.call_destroy_bottom );
+ }else{
+ gAmpCallTrace_pip.call_create_bottom++;
+ ALOGD("++%s[%s] create_count(%u,%u)", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN",
+ gAmpCallTrace_pip.call_create_bottom, gAmpCallTrace_pip.call_create_bottom - gAmpCallTrace_pip.call_destroy_bottom );
+ }
+
HRESULT ret;
AMP_COMPONENT_CONFIG amp_config;
AMP_DMX_CH_CFG output_config;
@@ -1328,6 +1360,15 @@ void amp_start_pipeline(AVP_HANDLE *player) {
}
synaptics_player_info *socPlayerInfo = (synaptics_player_info *) player;
+ if( !socPlayerInfo->pip ){
+ gAmpCallTrace_main.call_start++;
+ ALOGD("++%s[%s] start_count(%u,%u)", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN",
+ gAmpCallTrace_main.call_start, gAmpCallTrace_main.call_start - gAmpCallTrace_main.call_stop );
+ }else{
+ gAmpCallTrace_pip.call_start++;
+ ALOGD("++%s[%s] start_count(%u,%u)", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN",
+ gAmpCallTrace_pip.call_start, gAmpCallTrace_pip.call_start - gAmpCallTrace_pip.call_stop );
+ }
ALOGD("++%s[%s][%0xd] ", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN", (unsigned int)socPlayerInfo->ampFactory);
HRESULT ret;
@@ -1538,6 +1579,17 @@ void amp_destroy_pipeline_top_half(AVP_HANDLE *player) {
amp_log(socPlayerInfo->pip ? 1:0, "AMP_DMX_Destroy, socPlayerInfo->amp_dmx in");
AMP_RPC(ret, AMP_DMX_Destroy, socPlayerInfo->amp_dmx);
assert(ret == SUCCESS);
+
+ if( !socPlayerInfo->pip ){
+ gAmpCallTrace_main.call_destroy_top++;
+ ALOGD("++%s[%s] destroy_count(%u,%u)", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN",
+ gAmpCallTrace_main.call_destroy_top, gAmpCallTrace_main.call_create_top - gAmpCallTrace_main.call_destroy_top );
+ }else{
+ gAmpCallTrace_pip.call_start++;
+ ALOGD("++%s[%s] destroy_count(%u,%u)", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN",
+ gAmpCallTrace_pip.call_destroy_top, gAmpCallTrace_pip.call_create_top - gAmpCallTrace_pip.call_destroy_top );
+ }
+
}
void amp_destroy_pipeline_bottom_half(AVP_HANDLE *player) {
@@ -1681,6 +1733,17 @@ void amp_destroy_pipeline_bottom_half(AVP_HANDLE *player) {
assert(ret == SUCCESS);
// <------------------------- video
}
+
+ if( !socPlayerInfo->pip ){
+ gAmpCallTrace_main.call_destroy_bottom++;
+ ALOGD("++%s[%s] destroy_count(%u,%u)", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN",
+ gAmpCallTrace_main.call_destroy_bottom, gAmpCallTrace_main.call_create_bottom - gAmpCallTrace_main.call_destroy_bottom );
+ }else{
+ gAmpCallTrace_pip.call_destroy_bottom++;
+ ALOGD("++%s[%s] destroy_count(%u,%u)", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN",
+ gAmpCallTrace_pip.call_destroy_bottom, gAmpCallTrace_pip.call_create_bottom - gAmpCallTrace_pip.call_destroy_bottom );
+ }
+
}
void amp_destroy_pipeline_tail(AVP_HANDLE *player) {
@@ -1775,6 +1838,16 @@ void amp_stop_pipeline(AVP_HANDLE *player) {
assert(ret == SUCCESS);
// <------------------------- video
}
+
+ if( !socPlayerInfo->pip ){
+ gAmpCallTrace_main.call_stop++;
+ ALOGD("++%s[%s] stop_count(%u,%u)", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN",
+ gAmpCallTrace_main.call_stop, gAmpCallTrace_main.call_start - gAmpCallTrace_main.call_stop );
+ }else{
+ gAmpCallTrace_pip.call_stop++;
+ ALOGD("++%s[%s] stop_count(%u,%u)", __FUNCTION__, socPlayerInfo->pip ? "PIP":"MAIN",
+ gAmpCallTrace_pip.call_stop, gAmpCallTrace_pip.call_start - gAmpCallTrace_pip.call_stop );
+ }
}
HRESULT amp_zapping_mgr_stop_service(AVP_HANDLE *player) {
|
|
|
Hi Sangmin Choi, upload to /release_by_fxn/swan_test_image/20230321_mantis1496 Jerry |
|
|
Hi, Jerry, Could you please build test firmwares with below repositories? SD only. Test Firmware #1 syna-release/ampsdk : remotes/skb/BFX-UA300_5.3.6_test_BPM-16500 vendor/skb/prebuilts/digicap_btv-app : remotes/skb_prebuilts/BFX-UA300_5.3.6_test_BPM-16500 Test Firmware #2 syna-release/ampsdk : remotes/skb/BFX-UA300_5.3.6_test_BPM-16500 Thank you. Sangmin Choi. |
|
|
Hi Sangmin Choi. Please help to confirm "vendor/skb/prebuilts/digicap_btv-app : remotes/skb_prebuilts/BFX-UA300_5.3.6_test_BPM-16500" I can not find this branch. Jerry |
|
|
Hi Sangmin Choi, upload to /release_by_fxn/swan_test_image/20230327_mantis1496 Jerry |
|
|
Hi, Jerry, SKB told me following commit should be added to test firmware. So, I pushed it to BFX-UA300_5.3.6_test_BPM-16500 branch. commit 0a4750dfbf5c653a0f9f9e8a3ffab9fe7ad6acb2 (HEAD -> BFX-UA300_5.3.6_test_BPM-16500, skb/BFX-UA300_5.3.6_test_BPM-16500) Author: Jason Ling <jason.tf.ling@fii-foxconn.com> Date: Mon Mar 27 17:10:04 2023 +0800 [BAIS2-801] Adjust STC offset to prevent Audio drop for the case there is big PTS gab between Audio and Video Could you please build test firmwares again with below repositories? SD only. Test Firmware #1 syna-release/ampsdk : remotes/skb/BFX-UA300_5.3.6_test_BPM-16500 vendor/skb/prebuilts/digicap_btv-app : remotes/skb_prebuilts/BFX-UA300_5.3.6_test_BPM-16500 Test Firmware #2 syna-release/ampsdk : remotes/skb/BFX-UA300_5.3.6_test_BPM-16500 Thank you. Sangmin Choi. |
|
|
Hello, Jerry, Could you please build a test firmware after applied attached patches? SD only. syna-release/osal enable_log_timeout.patch Thank you. Sangmin Choi. enable_log_timeout.patch (1,296 bytes)
diff --git a/osal/alcore/mbuf.c b/osal/alcore/mbuf.c
index 0cc8054..f540bf9 100644
--- a/osal/alcore/mbuf.c
+++ b/osal/alcore/mbuf.c
@@ -55,7 +55,7 @@
#define LOG_TAG "MBUF"
#include <log/log.h>
#define MBUF_ERR(...) ALOGE(__VA_ARGS__)
-#define MBUF_DBG(...) //ALOGD(## __VA_ARGS__)
+#define MBUF_DBG(...) ALOGD(__VA_ARGS__)
#else
#define MBUF_ERR(...) printf( __VA_ARGS__)
#define MBUF_DBG(...) //printf( __VA_ARGS__)
@@ -242,9 +242,9 @@ static void *socket_func(void * arg)
if (timeout_flag == 0 && num == 0)
pthread_cond_wait(&thread->cond, &thread->mutex);
- if (thread->exit_flag == 1) {
- MBUF_DBG("%s line:%d will exit\n",
- __func__, __LINE__);
+ if (thread->exit_flag == 1 || timeout_flag > 2) {
+ MBUF_DBG("%s line:%d will exit (%d)\n",
+ __func__, __LINE__, timeout_flag);
if (fds != NULL)
free(fds);
pthread_mutex_unlock(&thread->mutex);
@@ -289,9 +289,9 @@ static void *socket_func(void * arg)
__LINE__, errno, strerror(errno));
assert(0);
} else if (ret == 0) {
- MBUF_DBG("%s line:%d poll time out\n",
- __func__, __LINE__);
- timeout_flag = 1;
+ MBUF_DBG("%s line:%d poll time out %dth\n",
+ __func__, __LINE__, timeout_flag);
+ timeout_flag++;
continue;
} else {
MBUF_DBG("%s line:%d poll ok [%d]\n",
|
|
|
Hi Sangmin Choi, upload to /release_by_fxn/swan_test_image/20230405_mantis1496 Jerry |
|
|
Hello, Jerry, Could you please build a test firmware after applied attached patches? SD only. syna-release/osal remove_mbuf_from_osal.patch Of course you always revert all modifications before build, but could you please check one more time the patch I asked yesterday(enable_log_timeout.patch) reverted?. Thank you. Sangmin Choi. remove_mbuf_from_osal.patch (842 bytes)
diff --git a/osal/alcore/OSAL.c b/osal/alcore/OSAL.c
index bd37619..4be98f8 100644
--- a/osal/alcore/OSAL.c
+++ b/osal/alcore/OSAL.c
@@ -58,6 +58,11 @@
#include "CC_socket.h"
#include "ion.h"
+#if defined(ANDROID) || defined(LOGCAT)
+#define LOG_TAG "MV_OSAL"
+#include <log/log.h>
+#endif
+
#ifdef ENABLE_SYSMON
extern HRESULT MV_MON_Init();
@@ -169,9 +174,11 @@ HRESULT MV_OSAL_Init()
if (res != S_OK)
goto init_exit;
- res = MV_MBUF_Init();
+ ALOGD("MV_OSAL_Init ignore MBUF_Init");
+/* res = MV_MBUF_Init();
if (res != S_OK)
goto init_exit;
+*/
init_exit:
pthread_mutex_unlock(&osal_init_mutex);
return res;
@@ -227,7 +234,8 @@ HRESULT MV_OSAL_Exit()
ion_release();
- MV_MBUF_Exit();
+ ALOGD("MV_OSAL_Exit ignore MBUF_Exit");
+// MV_MBUF_Exit();
res = MV_Time_Exit();
if (res != S_OK)
|
|
|
Hello, Jerry, Did you clean the syna-release? The firmware you uploaded didn't print debug messages in patch. I built the ND image after apply remove_mbuf_from_osal.patch, I can see the following messages from booting or enter the Home menu. 04-06 19:29:46.631 android.hardware.drm@1.2-service.widevine 399 484 D MV_OSAL MV_OSAL_Init ignore MBUF_Init 04-06 19:29:46.752 android.hardware.drm@1.2-service.widevine 399 484 D MV_OSAL MV_OSAL_Exit ignore MBUF_Exit 04-06 19:29:46.765 android.hardware.drm@1.2-service.widevine 399 484 D MV_OSAL MV_OSAL_Init ignore MBUF_Init 04-06 19:29:46.857 android.hardware.drm@1.2-service.widevine 399 484 D MV_OSAL MV_OSAL_Exit ignore MBUF_Exit 04-06 19:29:46.935 android.hardware.drm@1.2-service.widevine 399 484 D MV_OSAL MV_OSAL_Init ignore MBUF_Init 04-06 19:29:47.062 android.hardware.drm@1.2-service.widevine 399 484 D MV_OSAL MV_OSAL_Exit ignore MBUF_Exit Could you please check it and rebuild test firmware? Thank you. Sangmin Choi. |
|
|
Hi, Jerry, I'm so sorry, I gave you wrong guide. This patch should be applied to syna-release/ampsdk. I will find a way to avoid this kind of wrong direction. Could you please build a test firmware again? Thank you. Sangmin Choi. |
|
|
Hi Sangmin Choi, upload to /release_by_fxn/swan_test_image/20230407_mantis1496 Jerry |
|
|
Hi, Jerry, I checked the debug messages are printed successfully. Thank you. Sangmin Choi. |
|
|
Hi, Jerry, Could you please build test firmwares again with below repositories? SD only. syna-release/ampsdk : remotes/skb/BFX-UA300_5.3.6_test_BPM-16500 vendor/skb/prebuilts/digicap_btv-app : remotes/skb_prebuilts/BFX-UA300_5.3.6_test_BPM-16500 Thank you. Sangmin Choi. |
|
|
Hi, Jerry, Could you please build a test firmware after applied attached library? SD only. vendor/skb/prebuilts/skp_rtsp libskbrtsp.so This test firmware should be built under BFX-UA300_5.3.6 repositories. Please be careful with previous test firmware.(#c12923) Thank you. Sangmin Choi. |
|
|
Hi Sangmin Choi, upload to /release_by_fxn/swan_test_image/20230420_mantis1496 Jerry |
|
|
Hello, Jerry, Could you please build a test firmware after applied attached patches? SD only. syna-release/ampsdk 0001-add_debug_message_in_AMP_ConnectComp.patch Thank you. Sangmin Choi. 0001-add_debug_message_in_AMP_ConnectComp.patch (718 bytes)
diff --git a/amp/src/aal/amp_client_misc.c b/amp/src/aal/amp_client_misc.c
index 9a82655..d8f4133 100755
--- a/amp/src/aal/amp_client_misc.c
+++ b/amp/src/aal/amp_client_misc.c
@@ -493,6 +493,9 @@ HRESULT AMP_ConnectComp(AMP_COMPONENT hUpCompObj, UINT32 uiUpPortIdx,
uiUpPortIdx, &port_conn);
if (result != SUCCESS) {
/* Clean downstream component setup before */
+ FWLOGE("result : 0x%x", result);
+ FWLOGE("hDownCompObj : 0x%x", hDownCompObj);
+ FWLOGE("uiDownPortIdx : 0x%x", uiDownPortIdx);
AMP_RPC(result, AMP_COMPONENT_ClearPort, hDownCompObj, AMP_PORT_INPUT,
uiDownPortIdx);
FWLOGE("Setup upstream port fail! %d", uiUpPortIdx);
|
|
|
Hi Sangmin Choi, upload to /release_by_fxn/swan_test_image/20230510_mantis1496 Jerry |
|
|
Hi, Jerry, Could you please build test firmwares again with below repositories? SD only. syna-release/ampsdk : remotes/skb/BFX-UA300_5.3.6_test_CSMSKBSBLT-211 vendor/synaptics/vsxxx : remotes/skb/BFX-UA300_5.3.6_test_CSMSKBSBLT-211 Thank you. Sangmin Choi. |
|
|
Hi Sangmin Choi, Ok. If the test FW upload is completed , i wll notify you. Thanks. Jerry |
|
|
Hi Sangmin Choi, upload to /release_by_fxn/swan_test_image/20230515_mantis1496 Jerry |
|
|
Hello, Jerry, Could you please build a test firmware after applied attached patches? ND and SD. syna-release/linux_4_9_q SKBSBLT-215-test.patch Thank you. Sangmin Choi. SKBSBLT-215-test.patch (33,221 bytes)
diff --git a/arch/arm64/kernel/armv8_deprecated.c b/arch/arm64/kernel/armv8_deprecated.c
index 29d2ad8..0f7de61 100644
--- a/arch/arm64/kernel/armv8_deprecated.c
+++ b/arch/arm64/kernel/armv8_deprecated.c
@@ -63,6 +63,7 @@ struct insn_emulation {
static LIST_HEAD(insn_emulation);
static int nr_insn_emulated __initdata;
static DEFINE_RAW_SPINLOCK(insn_emulation_lock);
+static DEFINE_MUTEX(insn_emulation_mutex);
static void register_emulation_hooks(struct insn_emulation_ops *ops)
{
@@ -208,10 +209,10 @@ static int emulation_proc_handler(struct ctl_table *table, int write,
loff_t *ppos)
{
int ret = 0;
- struct insn_emulation *insn = (struct insn_emulation *) table->data;
+ struct insn_emulation *insn = container_of(table->data, struct insn_emulation, current_mode);
enum insn_emulation_mode prev_mode = insn->current_mode;
- table->data = &insn->current_mode;
+ mutex_lock(&insn_emulation_mutex);
ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos);
if (ret || !write || prev_mode == insn->current_mode)
@@ -224,7 +225,7 @@ static int emulation_proc_handler(struct ctl_table *table, int write,
update_insn_emulation_mode(insn, INSN_UNDEF);
}
ret:
- table->data = insn;
+ mutex_unlock(&insn_emulation_mutex);
return ret;
}
@@ -254,7 +255,7 @@ static void __init register_insn_emulation_sysctl(struct ctl_table *table)
sysctl->maxlen = sizeof(int);
sysctl->procname = insn->ops->name;
- sysctl->data = insn;
+ sysctl->data = &insn->current_mode;
sysctl->extra1 = &insn->min;
sysctl->extra2 = &insn->max;
sysctl->proc_handler = emulation_proc_handler;
diff --git a/drivers/android/binder.c b/drivers/android/binder.c
index 3eada68..fbd6add 100644
--- a/drivers/android/binder.c
+++ b/drivers/android/binder.c
@@ -505,6 +505,9 @@ struct binder_priority {
* @files files_struct for process
* (protected by @files_lock)
* @files_lock mutex to protect @files
+ * @cred struct cred associated with the `struct file`
+ * in binder_open()
+ * (invariant after initialized)
* @deferred_work_node: element for binder_deferred_list
* (protected by binder_deferred_lock)
* @deferred_work: bitmap of deferred work to perform
@@ -551,6 +554,7 @@ struct binder_proc {
struct task_struct *tsk;
struct files_struct *files;
struct mutex files_lock;
+ const struct cred *cred;
struct hlist_node deferred_work_node;
int deferred_work;
bool is_dead;
@@ -2007,6 +2011,18 @@ static int binder_inc_ref_for_node(struct binder_proc *proc,
}
ret = binder_inc_ref_olocked(ref, strong, target_list);
*rdata = ref->data;
+ if (ret && ref == new_ref) {
+ /*
+ * Cleanup the failed reference here as the target
+ * could now be dead and have already released its
+ * references by now. Calling on the new reference
+ * with strong=0 and a tmp_refs will not decrement
+ * the node. The new_ref gets kfree'd below.
+ */
+ binder_cleanup_ref_olocked(new_ref);
+ ref = NULL;
+ }
+
binder_proc_unlock(proc);
if (new_ref && ref != new_ref)
/*
@@ -2585,7 +2601,7 @@ static int binder_translate_binder(struct flat_binder_object *fp,
ret = -EINVAL;
goto done;
}
- if (security_binder_transfer_binder(proc->tsk, target_proc->tsk)) {
+ if (security_binder_transfer_binder(proc->cred, target_proc->cred)) {
ret = -EPERM;
goto done;
}
@@ -2631,7 +2647,7 @@ static int binder_translate_handle(struct flat_binder_object *fp,
proc->pid, thread->pid, fp->handle);
return -EINVAL;
}
- if (security_binder_transfer_binder(proc->tsk, target_proc->tsk)) {
+ if (security_binder_transfer_binder(proc->cred, target_proc->cred)) {
ret = -EPERM;
goto done;
}
@@ -2715,7 +2731,7 @@ static int binder_translate_fd(int fd,
ret = -EBADF;
goto err_fget;
}
- ret = security_binder_transfer_file(proc->tsk, target_proc->tsk, file);
+ ret = security_binder_transfer_file(proc->cred, target_proc->cred, file);
if (ret < 0) {
ret = -EPERM;
goto err_security;
@@ -3120,8 +3136,8 @@ static void binder_transaction(struct binder_proc *proc,
goto err_dead_binder;
}
e->to_node = target_node->debug_id;
- if (security_binder_transaction(proc->tsk,
- target_proc->tsk) < 0) {
+ if (security_binder_transaction(proc->cred,
+ target_proc->cred) < 0) {
return_error = BR_FAILED_REPLY;
return_error_param = -EPERM;
return_error_line = __LINE__;
@@ -4670,6 +4686,7 @@ static void binder_free_proc(struct binder_proc *proc)
BUG_ON(!list_empty(&proc->delivered_death));
binder_alloc_deferred_release(&proc->alloc);
put_task_struct(proc->tsk);
+ put_cred(proc->cred);
binder_stats_deleted(BINDER_STAT_PROC);
kfree(proc);
}
@@ -4875,7 +4892,7 @@ static int binder_ioctl_set_ctx_mgr(struct file *filp,
ret = -EBUSY;
goto out;
}
- ret = security_binder_set_context_mgr(proc->tsk);
+ ret = security_binder_set_context_mgr(proc->cred);
if (ret < 0)
goto out;
if (uid_valid(context->binder_context_mgr_uid)) {
@@ -5196,6 +5213,7 @@ static int binder_open(struct inode *nodp, struct file *filp)
get_task_struct(current->group_leader);
proc->tsk = current->group_leader;
mutex_init(&proc->files_lock);
+ proc->cred = get_cred(filp->f_cred);
INIT_LIST_HEAD(&proc->todo);
if (binder_supported_policy(current->policy)) {
proc->default_priority.sched_policy = current->policy;
diff --git a/drivers/staging/android/ion/ion-ioctl.c b/drivers/staging/android/ion/ion-ioctl.c
index e359685..a27865b 100644
--- a/drivers/staging/android/ion/ion-ioctl.c
+++ b/drivers/staging/android/ion/ion-ioctl.c
@@ -30,6 +30,69 @@ union ion_ioctl_arg {
struct ion_heap_query query;
};
+/* Must hold the client lock */
+static void user_ion_handle_get(struct ion_handle *handle)
+{
+ if (handle->user_ref_count++ == 0)
+ kref_get(&handle->ref);
+}
+
+/* Must hold the client lock */
+static struct ion_handle *user_ion_handle_get_check_overflow(
+ struct ion_handle *handle)
+{
+ if (handle->user_ref_count + 1 == 0)
+ return ERR_PTR(-EOVERFLOW);
+ user_ion_handle_get(handle);
+ return handle;
+}
+
+/* passes a kref to the user ref count.
+ * We know we're holding a kref to the object before and
+ * after this call, so no need to reverify handle.
+ */
+static struct ion_handle *pass_to_user(struct ion_handle *handle)
+{
+ struct ion_client *client = handle->client;
+ struct ion_handle *ret;
+
+ mutex_lock(&client->lock);
+ ret = user_ion_handle_get_check_overflow(handle);
+ ion_handle_put_nolock(handle);
+ mutex_unlock(&client->lock);
+ return ret;
+}
+
+/* Must hold the client lock */
+static int user_ion_handle_put_nolock(struct ion_handle *handle)
+{
+ int ret;
+
+ if (--handle->user_ref_count == 0)
+ ret = ion_handle_put_nolock(handle);
+
+ return ret;
+}
+
+static void user_ion_free_nolock(struct ion_client *client,
+ struct ion_handle *handle)
+{
+ bool valid_handle;
+
+ WARN_ON(client != handle->client);
+
+ valid_handle = ion_handle_validate(client, handle);
+ if (!valid_handle) {
+ WARN(1, "%s: invalid handle passed to free.\n", __func__);
+ return;
+ }
+ if (handle->user_ref_count == 0) {
+ WARN(1, "%s: User does not have access!\n", __func__);
+ return;
+ }
+ user_ion_handle_put_nolock(handle);
+}
+
static int validate_ioctl_arg(unsigned int cmd, union ion_ioctl_arg *arg)
{
int ret = 0;
@@ -96,16 +159,15 @@ long ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{
struct ion_handle *handle;
- handle = ion_alloc(client, data.allocation.len,
- data.allocation.align,
- data.allocation.heap_id_mask,
- data.allocation.flags);
+ handle = __ion_alloc(client, data.allocation.len,
+ data.allocation.align,
+ data.allocation.heap_id_mask,
+ data.allocation.flags, true);
if (IS_ERR(handle))
return PTR_ERR(handle);
-
data.allocation.handle = handle->id;
-
cleanup_handle = handle;
+ pass_to_user(handle);
break;
}
case ION_IOC_FREE:
@@ -118,7 +180,7 @@ long ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
mutex_unlock(&client->lock);
return PTR_ERR(handle);
}
- ion_free_nolock(client, handle);
+ user_ion_free_nolock(client, handle);
ion_handle_put_nolock(handle);
mutex_unlock(&client->lock);
break;
@@ -146,10 +208,16 @@ long ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
struct ion_handle *handle;
handle = ion_import_dma_buf_fd(client, data.fd.fd);
- if (IS_ERR(handle))
+ if (IS_ERR(handle)) {
ret = PTR_ERR(handle);
- else
+ } else {
data.handle.handle = handle->id;
+ handle = pass_to_user(handle);
+ if (IS_ERR(handle)) {
+ ret = PTR_ERR(handle);
+ data.handle.handle = 0;
+ }
+ }
break;
}
case ION_IOC_SYNC:
@@ -174,10 +242,16 @@ long ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
if (dir & _IOC_READ) {
if (copy_to_user((void __user *)arg, &data, _IOC_SIZE(cmd))) {
- if (cleanup_handle)
- ion_free(client, cleanup_handle);
+ if (cleanup_handle) {
+ mutex_lock(&client->lock);
+ user_ion_free_nolock(client, cleanup_handle);
+ ion_handle_put_nolock(cleanup_handle);
+ mutex_unlock(&client->lock);
+ }
return -EFAULT;
}
}
+ if (cleanup_handle)
+ ion_handle_put(cleanup_handle);
return ret;
}
diff --git a/drivers/staging/android/ion/ion.c b/drivers/staging/android/ion/ion.c
index 3787405..b5784a6 100644
--- a/drivers/staging/android/ion/ion.c
+++ b/drivers/staging/android/ion/ion.c
@@ -404,8 +404,8 @@ struct ion_handle *ion_handle_get_by_id_nolock(struct ion_client *client,
return ERR_PTR(-EINVAL);
}
-static bool ion_handle_validate(struct ion_client *client,
- struct ion_handle *handle)
+bool ion_handle_validate(struct ion_client *client,
+ struct ion_handle *handle)
{
WARN_ON(!mutex_is_locked(&client->lock));
return idr_find(&client->idr, handle->id) == handle;
@@ -504,9 +504,9 @@ static int ion_shrink(struct ion_heap *heap, int kill_adj)
return -EAGAIN;
}
-struct ion_handle *ion_alloc(struct ion_client *client, size_t len,
- size_t align, unsigned int heap_id_mask,
- unsigned int flags)
+struct ion_handle *__ion_alloc(struct ion_client *client, size_t len,
+ size_t align, unsigned int heap_id_mask,
+ unsigned int flags, bool grab_handle)
{
struct ion_handle *handle;
struct ion_device *dev = client->dev;
@@ -573,6 +573,8 @@ struct ion_handle *ion_alloc(struct ion_client *client, size_t len,
return handle;
mutex_lock(&client->lock);
+ if (grab_handle)
+ ion_handle_get(handle);
ret = ion_handle_add(client, handle);
mutex_unlock(&client->lock);
if (ret) {
@@ -582,6 +584,13 @@ struct ion_handle *ion_alloc(struct ion_client *client, size_t len,
return handle;
}
+
+struct ion_handle *ion_alloc(struct ion_client *client, size_t len,
+ size_t align, unsigned int heap_id_mask,
+ unsigned int flags)
+{
+ return __ion_alloc(client, len, align, heap_id_mask, flags, false);
+}
EXPORT_SYMBOL(ion_alloc);
void ion_free_nolock(struct ion_client *client,
@@ -1119,42 +1128,45 @@ static void ion_dma_buf_release(struct dma_buf *dmabuf)
static void *ion_dma_buf_kmap(struct dma_buf *dmabuf, unsigned long offset)
{
struct ion_buffer *buffer = dmabuf->priv;
+ void *vaddr;
+
+ if (!buffer->heap->ops->map_kernel) {
+ pr_err("%s: map kernel is not implemented by this heap.\n",
+ __func__);
+ return ERR_PTR(-ENOTTY);
+ }
+ mutex_lock(&buffer->lock);
+ vaddr = ion_buffer_kmap_get(buffer);
+ mutex_unlock(&buffer->lock);
+
+ if (IS_ERR(vaddr))
+ return vaddr;
- return buffer->vaddr + offset * PAGE_SIZE;
+ return vaddr + offset * PAGE_SIZE;
}
static void ion_dma_buf_kunmap(struct dma_buf *dmabuf, unsigned long offset,
void *ptr)
{
+ struct ion_buffer *buffer = dmabuf->priv;
+
+ if (buffer->heap->ops->map_kernel) {
+ mutex_lock(&buffer->lock);
+ ion_buffer_kmap_put(buffer);
+ mutex_unlock(&buffer->lock);
+ }
+
}
static int ion_dma_buf_begin_cpu_access(struct dma_buf *dmabuf,
enum dma_data_direction direction)
{
- struct ion_buffer *buffer = dmabuf->priv;
- void *vaddr;
-
- if (!buffer->heap->ops->map_kernel) {
- pr_err("%s: map kernel is not implemented by this heap.\n",
- __func__);
- return -ENODEV;
- }
-
- mutex_lock(&buffer->lock);
- vaddr = ion_buffer_kmap_get(buffer);
- mutex_unlock(&buffer->lock);
- return PTR_ERR_OR_ZERO(vaddr);
+ return 0;
}
static int ion_dma_buf_end_cpu_access(struct dma_buf *dmabuf,
enum dma_data_direction direction)
{
- struct ion_buffer *buffer = dmabuf->priv;
-
- mutex_lock(&buffer->lock);
- ion_buffer_kmap_put(buffer);
- mutex_unlock(&buffer->lock);
-
return 0;
}
diff --git a/drivers/staging/android/ion/ion.h b/drivers/staging/android/ion/ion.h
index 7c982e1..6c309f8 100644
--- a/drivers/staging/android/ion/ion.h
+++ b/drivers/staging/android/ion/ion.h
@@ -113,6 +113,10 @@ struct ion_handle *ion_alloc(struct ion_client *client, size_t len,
size_t align, unsigned int heap_id_mask,
unsigned int flags);
+struct ion_handle *__ion_alloc(struct ion_client *client, size_t len,
+ size_t align, unsigned int heap_id_mask,
+ unsigned int flags, bool grab_handle);
+
/**
* ion_free - free a handle
* @client: the client
diff --git a/drivers/staging/android/ion/ion_priv.h b/drivers/staging/android/ion/ion_priv.h
index a6f1d2e..6db71a5 100644
--- a/drivers/staging/android/ion/ion_priv.h
+++ b/drivers/staging/android/ion/ion_priv.h
@@ -154,6 +154,7 @@ struct ion_client {
*/
struct ion_handle {
struct kref ref;
+ unsigned int user_ref_count;
struct ion_client *client;
struct ion_buffer *buffer;
struct rb_node node;
@@ -492,6 +493,9 @@ int ion_sync_for_device(struct ion_client *client, int fd);
struct ion_handle *ion_handle_get_by_id_nolock(struct ion_client *client,
int id);
+bool ion_handle_validate(struct ion_client *client,
+ struct ion_handle *handle);
+
void ion_free_nolock(struct ion_client *client, struct ion_handle *handle);
int ion_handle_put_nolock(struct ion_handle *handle);
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 8a894cd..b1e9f70 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -1255,10 +1255,8 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
*/
if (!for_part) {
ret = devcgroup_inode_permission(bdev->bd_inode, perm);
- if (ret != 0) {
- bdput(bdev);
+ if (ret != 0)
return ret;
- }
}
restart:
@@ -1330,8 +1328,10 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
goto out_clear;
BUG_ON(for_part);
ret = __blkdev_get(whole, mode, 1);
- if (ret)
+ if (ret) {
+ bdput(whole);
goto out_clear;
+ }
bdev->bd_contains = whole;
bdev->bd_part = disk_get_part(disk, partno);
if (!(disk->flags & GENHD_FL_UP) ||
@@ -1382,7 +1382,6 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
put_disk(disk);
module_put(owner);
out:
- bdput(bdev);
return ret;
}
@@ -1468,6 +1467,10 @@ int blkdev_get(struct block_device *bdev, fmode_t mode, void *holder)
bdput(whole);
}
+ if (res)
+ bdput(bdev);
+
+
return res;
}
EXPORT_SYMBOL(blkdev_get);
diff --git a/fs/eventpoll.c b/fs/eventpoll.c
index a107a26..ede9e17 100644
--- a/fs/eventpoll.c
+++ b/fs/eventpoll.c
@@ -1340,6 +1340,22 @@ static int ep_insert(struct eventpoll *ep, struct epoll_event *event,
RCU_INIT_POINTER(epi->ws, NULL);
}
+ /* Add the current item to the list of active epoll hook for this file */
+ spin_lock(&tfile->f_lock);
+ list_add_tail_rcu(&epi->fllink, &tfile->f_ep_links);
+ spin_unlock(&tfile->f_lock);
+
+ /*
+ * Add the current item to the RB tree. All RB tree operations are
+ * protected by "mtx", and ep_insert() is called with "mtx" held.
+ */
+ ep_rbtree_insert(ep, epi);
+
+ /* now check if we've created too many backpaths */
+ error = -EINVAL;
+ if (full_check && reverse_path_check())
+ goto error_remove_epi;
+
/* Initialize the poll table using the queue callback */
epq.epi = epi;
init_poll_funcptr(&epq.pt, ep_ptable_queue_proc);
@@ -1362,22 +1378,6 @@ static int ep_insert(struct eventpoll *ep, struct epoll_event *event,
if (epi->nwait < 0)
goto error_unregister;
- /* Add the current item to the list of active epoll hook for this file */
- spin_lock(&tfile->f_lock);
- list_add_tail_rcu(&epi->fllink, &tfile->f_ep_links);
- spin_unlock(&tfile->f_lock);
-
- /*
- * Add the current item to the RB tree. All RB tree operations are
- * protected by "mtx", and ep_insert() is called with "mtx" held.
- */
- ep_rbtree_insert(ep, epi);
-
- /* now check if we've created too many backpaths */
- error = -EINVAL;
- if (full_check && reverse_path_check())
- goto error_remove_epi;
-
/* We have to drop the new item inside our item list to keep track of it */
spin_lock_irqsave(&ep->lock, flags);
@@ -1403,6 +1403,8 @@ static int ep_insert(struct eventpoll *ep, struct epoll_event *event,
return 0;
+error_unregister:
+ ep_unregister_pollwait(ep, epi);
error_remove_epi:
spin_lock(&tfile->f_lock);
list_del_rcu(&epi->fllink);
@@ -1410,9 +1412,6 @@ static int ep_insert(struct eventpoll *ep, struct epoll_event *event,
rb_erase(&epi->rbn, &ep->rbr);
-error_unregister:
- ep_unregister_pollwait(ep, epi);
-
/*
* We need to do this because an event could have been arrived on some
* allocated wait queue. Note that we don't care about the ep->ovflist
diff --git a/fs/signalfd.c b/fs/signalfd.c
index 270221f..9c5fa0a 100644
--- a/fs/signalfd.c
+++ b/fs/signalfd.c
@@ -34,17 +34,7 @@
void signalfd_cleanup(struct sighand_struct *sighand)
{
- wait_queue_head_t *wqh = &sighand->signalfd_wqh;
- /*
- * The lockless check can race with remove_wait_queue() in progress,
- * but in this case its caller should run under rcu_read_lock() and
- * sighand_cachep is SLAB_DESTROY_BY_RCU, we can safely return.
- */
- if (likely(!waitqueue_active(wqh)))
- return;
-
- /* wait_queue_t->func(POLLFREE) should do remove_wait_queue() */
- wake_up_poll(wqh, POLLHUP | POLLFREE);
+ wake_up_pollfree(&sighand->signalfd_wqh);
}
struct signalfd_ctx {
diff --git a/include/linux/lsm_hooks.h b/include/linux/lsm_hooks.h
index 121f2f2..b78a660 100644
--- a/include/linux/lsm_hooks.h
+++ b/include/linux/lsm_hooks.h
@@ -1147,22 +1147,22 @@
*
* @binder_set_context_mgr
* Check whether @mgr is allowed to be the binder context manager.
- * @mgr contains the task_struct for the task being registered.
+ * @mgr contains the struct cred for the current binder process.
* Return 0 if permission is granted.
* @binder_transaction
* Check whether @from is allowed to invoke a binder transaction call
* to @to.
- * @from contains the task_struct for the sending task.
- * @to contains the task_struct for the receiving task.
- * @binder_transfer_binder
+ * @from contains the struct cred for the sending process.
+ * @to contains the struct cred for the receiving process.
+ * @binder_transfer_binder:
* Check whether @from is allowed to transfer a binder reference to @to.
- * @from contains the task_struct for the sending task.
- * @to contains the task_struct for the receiving task.
- * @binder_transfer_file
+ * @from contains the struct cred for the sending process.
+ * @to contains the struct cred for the receiving process.
+ * @binder_transfer_file:
* Check whether @from is allowed to transfer @file to @to.
- * @from contains the task_struct for the sending task.
+ * @from contains the struct cred for the sending process.
* @file contains the struct file being transferred.
- * @to contains the task_struct for the receiving task.
+ * @to contains the struct cred for the receiving process.
*
* @ptrace_access_check:
* Check permission before allowing the current process to trace the
@@ -1365,13 +1365,13 @@
*/
union security_list_options {
- int (*binder_set_context_mgr)(struct task_struct *mgr);
- int (*binder_transaction)(struct task_struct *from,
- struct task_struct *to);
- int (*binder_transfer_binder)(struct task_struct *from,
- struct task_struct *to);
- int (*binder_transfer_file)(struct task_struct *from,
- struct task_struct *to,
+ int (*binder_set_context_mgr)(const struct cred *mgr);
+ int (*binder_transaction)(const struct cred *from,
+ const struct cred *to);
+ int (*binder_transfer_binder)(const struct cred *from,
+ const struct cred *to);
+ int (*binder_transfer_file)(const struct cred *from,
+ const struct cred *to,
struct file *file);
int (*ptrace_access_check)(struct task_struct *child,
diff --git a/include/linux/security.h b/include/linux/security.h
index 3632428..93ff8c3 100644
--- a/include/linux/security.h
+++ b/include/linux/security.h
@@ -184,13 +184,13 @@ static inline void security_free_mnt_opts(struct security_mnt_opts *opts)
extern int security_init(void);
/* Security operations */
-int security_binder_set_context_mgr(struct task_struct *mgr);
-int security_binder_transaction(struct task_struct *from,
- struct task_struct *to);
-int security_binder_transfer_binder(struct task_struct *from,
- struct task_struct *to);
-int security_binder_transfer_file(struct task_struct *from,
- struct task_struct *to, struct file *file);
+int security_binder_set_context_mgr(const struct cred *mgr);
+int security_binder_transaction(const struct cred *from,
+ const struct cred *to);
+int security_binder_transfer_binder(const struct cred *from,
+ const struct cred *to);
+int security_binder_transfer_file(const struct cred *from,
+ const struct cred *to, struct file *file);
int security_ptrace_access_check(struct task_struct *child, unsigned int mode);
int security_ptrace_traceme(struct task_struct *parent);
int security_capget(struct task_struct *target,
@@ -394,25 +394,25 @@ static inline int security_init(void)
return 0;
}
-static inline int security_binder_set_context_mgr(struct task_struct *mgr)
+static inline int security_binder_set_context_mgr(const struct cred *mgr)
{
return 0;
}
-static inline int security_binder_transaction(struct task_struct *from,
- struct task_struct *to)
+static inline int security_binder_transaction(const struct cred *from,
+ const struct cred *to)
{
return 0;
}
-static inline int security_binder_transfer_binder(struct task_struct *from,
- struct task_struct *to)
+static inline int security_binder_transfer_binder(const struct cred *from,
+ const struct cred *to)
{
return 0;
}
-static inline int security_binder_transfer_file(struct task_struct *from,
- struct task_struct *to,
+static inline int security_binder_transfer_file(const struct cred *from,
+ const struct cred *to,
struct file *file)
{
return 0;
diff --git a/include/linux/wait.h b/include/linux/wait.h
index 2408e8d..e022ee9 100644
--- a/include/linux/wait.h
+++ b/include/linux/wait.h
@@ -202,6 +202,7 @@ void __wake_up_locked_key(wait_queue_head_t *q, unsigned int mode, void *key);
void __wake_up_sync_key(wait_queue_head_t *q, unsigned int mode, int nr, void *key);
void __wake_up_locked(wait_queue_head_t *q, unsigned int mode, int nr);
void __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr);
+void __wake_up_pollfree(wait_queue_head_t *wq_head);
void __wake_up_bit(wait_queue_head_t *, void *, int);
int __wait_on_bit(wait_queue_head_t *, struct wait_bit_queue *, wait_bit_action_f *, unsigned);
int __wait_on_bit_lock(wait_queue_head_t *, struct wait_bit_queue *, wait_bit_action_f *, unsigned);
@@ -236,6 +237,31 @@ wait_queue_head_t *bit_waitqueue(void *, int);
#define wake_up_interruptible_sync_poll(x, m) \
__wake_up_sync_key((x), TASK_INTERRUPTIBLE, 1, (void *) (m))
+/**
+ * wake_up_pollfree - signal that a polled waitqueue is going away
+ * @wq_head: the wait queue head
+ *
+ * In the very rare cases where a ->poll() implementation uses a waitqueue whose
+ * lifetime is tied to a task rather than to the 'struct file' being polled,
+ * this function must be called before the waitqueue is freed so that
+ * non-blocking polls (e.g. epoll) are notified that the queue is going away.
+ *
+ * The caller must also RCU-delay the freeing of the wait_queue_head, e.g. via
+ * an explicit synchronize_rcu() or call_rcu(), or via SLAB_DESTROY_BY_RCU.
+ */
+static inline void wake_up_pollfree(wait_queue_head_t *wq_head)
+{
+ /*
+ * For performance reasons, we don't always take the queue lock here.
+ * Therefore, we might race with someone removing the last entry from
+ * the queue, and proceed while they still hold the queue lock.
+ * However, rcu_read_lock() is required to be held in such cases, so we
+ * can safely proceed with an RCU-delayed free.
+ */
+ if (waitqueue_active(wq_head))
+ __wake_up_pollfree(wq_head);
+}
+
#define ___wait_cond_timeout(condition) \
({ \
bool __cond = (condition); \
diff --git a/kernel/sched/wait.c b/kernel/sched/wait.c
index 9453efe..133afaf 100644
--- a/kernel/sched/wait.c
+++ b/kernel/sched/wait.c
@@ -10,6 +10,7 @@
#include <linux/wait.h>
#include <linux/hash.h>
#include <linux/kthread.h>
+#include <linux/poll.h>
void __init_waitqueue_head(wait_queue_head_t *q, const char *name, struct lock_class_key *key)
{
@@ -156,6 +157,13 @@ void __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr_exclusive)
}
EXPORT_SYMBOL_GPL(__wake_up_sync); /* For internal use only */
+void __wake_up_pollfree(wait_queue_head_t *wq_head)
+{
+ __wake_up(wq_head, TASK_NORMAL, 0, (void *)(POLLHUP | POLLFREE));
+ /* POLLFREE must have cleared the queue. */
+ WARN_ON_ONCE(waitqueue_active(wq_head));
+}
+
/*
* Note: we use "set_current_state()" _after_ the wait-queue add,
* because we need a memory barrier there on SMP, so that any
diff --git a/lib/iov_iter.c b/lib/iov_iter.c
index a75ea63..9bb4b3e 100644
--- a/lib/iov_iter.c
+++ b/lib/iov_iter.c
@@ -370,6 +370,7 @@ static size_t copy_page_to_iter_pipe(struct page *page, size_t offset, size_t by
return 0;
pipe->nrbufs++;
buf->ops = &page_cache_pipe_buf_ops;
+ buf->flags = 0;
get_page(buf->page = page);
buf->offset = offset;
buf->len = bytes;
@@ -494,6 +495,7 @@ static size_t push_pipe(struct iov_iter *i, size_t size,
break;
pipe->nrbufs++;
pipe->bufs[idx].ops = &default_pipe_buf_ops;
+ pipe->bufs[idx].flags = 0;
pipe->bufs[idx].page = page;
pipe->bufs[idx].offset = 0;
if (left <= PAGE_SIZE) {
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index c6779ac..46d8b14 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -1754,6 +1754,8 @@ void __split_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
spinlock_t *ptl;
struct mm_struct *mm = vma->vm_mm;
unsigned long haddr = address & HPAGE_PMD_MASK;
+ bool was_locked = false;
+ pmd_t _pmd;
mmu_notifier_invalidate_range_start(mm, haddr, haddr + HPAGE_PMD_SIZE);
ptl = pmd_lock(mm, pmd);
@@ -1763,11 +1765,32 @@ void __split_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
* pmd against. Otherwise we can end up replacing wrong page.
*/
VM_BUG_ON(freeze && !page);
- if (page && page != pmd_page(*pmd))
- goto out;
+ if (page) {
+ VM_WARN_ON_ONCE(!PageLocked(page));
+ was_locked = true;
+ if (page != pmd_page(*pmd))
+ goto out;
+ }
+repeat:
if (pmd_trans_huge(*pmd)) {
- page = pmd_page(*pmd);
+ if (!page) {
+ page = pmd_page(*pmd);
+ if (unlikely(!trylock_page(page))) {
+ get_page(page);
+ _pmd = *pmd;
+ spin_unlock(ptl);
+ lock_page(page);
+ spin_lock(ptl);
+ if (unlikely(!pmd_same(*pmd, _pmd))) {
+ unlock_page(page);
+ put_page(page);
+ page = NULL;
+ goto repeat;
+ }
+ put_page(page);
+ }
+ }
if (PageMlocked(page))
clear_page_mlock(page);
} else if (!pmd_devmap(*pmd))
@@ -1775,6 +1798,8 @@ void __split_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
__split_huge_pmd_locked(vma, pmd, haddr, freeze);
out:
spin_unlock(ptl);
+ if (!was_locked && page)
+ unlock_page(page);
mmu_notifier_invalidate_range_end(mm, haddr, haddr + HPAGE_PMD_SIZE);
}
diff --git a/net/netfilter/xt_qtaguid.c b/net/netfilter/xt_qtaguid.c
index d677909..bc7496d 100644
--- a/net/netfilter/xt_qtaguid.c
+++ b/net/netfilter/xt_qtaguid.c
@@ -1066,18 +1066,6 @@ static struct sock_tag *get_sock_stat_nl(const struct sock *sk)
return sock_tag_tree_search(&sock_tag_tree, sk);
}
-static struct sock_tag *get_sock_stat(const struct sock *sk)
-{
- struct sock_tag *sock_tag_entry;
- MT_DEBUG("qtaguid: get_sock_stat(sk=%p)\n", sk);
- if (!sk)
- return NULL;
- spin_lock_bh(&sock_tag_list_lock);
- sock_tag_entry = get_sock_stat_nl(sk);
- spin_unlock_bh(&sock_tag_list_lock);
- return sock_tag_entry;
-}
-
static int ipx_proto(const struct sk_buff *skb,
struct xt_action_param *par)
{
@@ -1309,12 +1297,15 @@ static void if_tag_stat_update(const char *ifname, uid_t uid,
* Look for a tagged sock.
* It will have an acct_uid.
*/
- sock_tag_entry = get_sock_stat(sk);
+ spin_lock_bh(&sock_tag_list_lock);
+ sock_tag_entry = sk ? get_sock_stat_nl(sk) : NULL;
if (sock_tag_entry) {
tag = sock_tag_entry->tag;
acct_tag = get_atag_from_tag(tag);
uid_tag = get_utag_from_tag(tag);
- } else {
+ }
+ spin_unlock_bh(&sock_tag_list_lock);
+ if (!sock_tag_entry) {
acct_tag = make_atag_from_value(0);
tag = combine_atag_with_uid(acct_tag, uid);
uid_tag = make_tag_from_uid(uid);
diff --git a/net/netfilter/xt_quota2.c b/net/netfilter/xt_quota2.c
index 834594a..01568e3 100644
--- a/net/netfilter/xt_quota2.c
+++ b/net/netfilter/xt_quota2.c
@@ -162,6 +162,8 @@ static ssize_t quota_proc_write(struct file *file, const char __user *input,
if (copy_from_user(buf, input, size) != 0)
return -EFAULT;
buf[sizeof(buf)-1] = '\0';
+ if (size < sizeof(buf))
+ buf[size] = '\0';
spin_lock_bh(&e->lock);
e->quota = simple_strtoull(buf, NULL, 0);
diff --git a/security/security.c b/security/security.c
index de6ebf8..8571804 100644
--- a/security/security.c
+++ b/security/security.c
@@ -132,25 +132,25 @@ int __init security_module_enable(const char *module)
/* Security operations */
-int security_binder_set_context_mgr(struct task_struct *mgr)
+int security_binder_set_context_mgr(const struct cred *mgr)
{
return call_int_hook(binder_set_context_mgr, 0, mgr);
}
-int security_binder_transaction(struct task_struct *from,
- struct task_struct *to)
+int security_binder_transaction(const struct cred *from,
+ const struct cred *to)
{
return call_int_hook(binder_transaction, 0, from, to);
}
-int security_binder_transfer_binder(struct task_struct *from,
- struct task_struct *to)
+int security_binder_transfer_binder(const struct cred *from,
+ const struct cred *to)
{
return call_int_hook(binder_transfer_binder, 0, from, to);
}
-int security_binder_transfer_file(struct task_struct *from,
- struct task_struct *to, struct file *file)
+int security_binder_transfer_file(const struct cred *from,
+ const struct cred *to, struct file *file)
{
return call_int_hook(binder_transfer_file, 0, from, to, file);
}
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
index bc5222e..79063e5 100644
--- a/security/selinux/hooks.c
+++ b/security/selinux/hooks.c
@@ -2078,21 +2078,18 @@ static inline u32 open_file_to_av(struct file *file)
/* Hook functions begin here. */
-static int selinux_binder_set_context_mgr(struct task_struct *mgr)
+static int selinux_binder_set_context_mgr(const struct cred *mgr)
{
- u32 mysid = current_sid();
- u32 mgrsid = task_sid(mgr);
-
- return avc_has_perm(mysid, mgrsid, SECCLASS_BINDER,
+ return avc_has_perm(current_sid(), cred_sid(mgr), SECCLASS_BINDER,
BINDER__SET_CONTEXT_MGR, NULL);
}
-static int selinux_binder_transaction(struct task_struct *from,
- struct task_struct *to)
+static int selinux_binder_transaction(const struct cred *from,
+ const struct cred *to)
{
u32 mysid = current_sid();
- u32 fromsid = task_sid(from);
- u32 tosid = task_sid(to);
+ u32 fromsid = cred_sid(from);
+ u32 tosid = cred_sid(to);
int rc;
if (mysid != fromsid) {
@@ -2106,21 +2103,19 @@ static int selinux_binder_transaction(struct task_struct *from,
NULL);
}
-static int selinux_binder_transfer_binder(struct task_struct *from,
- struct task_struct *to)
+static int selinux_binder_transfer_binder(const struct cred *from,
+ const struct cred *to)
{
- u32 fromsid = task_sid(from);
- u32 tosid = task_sid(to);
-
- return avc_has_perm(fromsid, tosid, SECCLASS_BINDER, BINDER__TRANSFER,
+ return avc_has_perm(cred_sid(from), cred_sid(to),
+ SECCLASS_BINDER, BINDER__TRANSFER,
NULL);
}
-static int selinux_binder_transfer_file(struct task_struct *from,
- struct task_struct *to,
+static int selinux_binder_transfer_file(const struct cred *from,
+ const struct cred *to,
struct file *file)
{
- u32 sid = task_sid(to);
+ u32 sid = cred_sid(to);
struct file_security_struct *fsec = file->f_security;
struct dentry *dentry = file->f_path.dentry;
struct inode_security_struct *isec;
|
|
|
Hi Sangmin Choi, upload to /release_by_fxn/swan_test_image/20230516_mantis1496 SD Version: BFX-UA300_20230516_SD_v536r27 ND Version: BFX-UA300_20230516_ND_v536r27 Jerry |
|
|
Hello, Jerry, Could you please build a test firmware? SD only. syna-release/tee 2977b770c01e998c8e4281e6bd118c2cf0d52c30 You can checkout the test branch using following command. cd syna-release/tee git checkout -b test 2977b770c01e998c8e4281e6bd118c2cf0d52c30 Thank you. Sangmin Choi. |
|
|
Hi Sangmin Choi, upload to /release_by_fxn/swan_test_image/20230522_mantis1496/usb_bfx-ua300_V19.536.27_SD.zip Jerry |
|
|
Hello, Jerry, Could you please build a test firmware after applied attached patches? SD only. syna-release/ampsdk change_debug_level.diff Thank you. Sangmin Choi. change_debug_level.diff (756 bytes)
diff --git a/amp/src/ddl/common/component.c b/amp/src/ddl/common/component.c
index 8a8fb24..fb5ab2b 100755
--- a/amp/src/ddl/common/component.c
+++ b/amp/src/ddl/common/component.c
@@ -844,7 +844,7 @@ HRESULT DDL_COMPONENT_LockConnection(COMPONENT hThisInstance,
pPortPeer =
&hInstancePeer->pPort[AMP_PORT_OUTPUT][pPort->stConn.uiPeerPortIdx];
if (pPortPeer == NULL) {
- MODLOGH("Null lock: %s, %s, %d; Peer: %s, %d, 0x%08x, 0x%08x\n",
+ MODLOGE("Null lock: %s, %s, %d; Peer: %s, %d, 0x%08x, 0x%08x\n",
compInfo->sName, ePortIo == AMP_PORT_INPUT ? "input" : "output",
uiPortIdx, hInstancePeer->stInfo.sName,
pPort->stConn.uiPeerPortIdx, hInstancePeer,
|
|
|
Hi Sangmin Choi, upload to /release_by_fxn/swan_test_image/20230608_mantis1496/usb_bfx-ua300_V19.536.29_SD.zip Jerry |
|
|
Hello, Jerry, Could you please build a test firmware after applied attached patches? SD only. syna-release/ampsdk 0001-AMP-event-add-mutex-for-rwlock-to-avoid-it-dead-lock.patch Thank you. Sangmin Choi. 0001-AMP-event-add-mutex-for-rwlock-to-avoid-it-dead-lock.patch (4,762 bytes)
From 3fbf857a07b630c7881bacdb4ec2b853bbbbaf37 Mon Sep 17 00:00:00 2001
From: Zhiliang Wang <Zhiliang.Wang@synaptics.com>
Date: Wed, 5 Jan 2022 11:14:29 +0800
Subject: [PATCH] AMP: event: add mutex for rwlock to avoid it dead lock
currently there is bug in pthread lib, dead lock will easily
occur when multiple threads call pthread_rwlock apis, add
mutext as a workaround to avoid it
Change-Id: Ie0ecf17cb27d00c5c9119ab9fdd52cc3319a8543
---
amp/src/libs/server/amp_event_service.c | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
diff --git a/amp/src/libs/server/amp_event_service.c b/amp/src/libs/server/amp_event_service.c
index 623866b..30644dd 100755
--- a/amp/src/libs/server/amp_event_service.c
+++ b/amp/src/libs/server/amp_event_service.c
@@ -97,6 +97,7 @@ typedef struct {
#ifdef AMP_LATENCY_EVENT_SRV_PROF
AMP_TOP stEventCBStats;
#endif
+ MV_OSAL_HANDLE_MUTEX_t hMutex;
} EVENT_LISTEN_SERVICE;
static EVENT_LISTEN_SERVICE *m_event_service;
@@ -292,10 +293,12 @@ HRESULT ISL_Listener_Create(UINT uiSrvIdN, UINT uiSrvIdC, HANDLE *phListener)
EVENT_LISTEN_SERVICE *pEventService = m_event_service;
EVENT_LISTEN_CLIENT *pClientListener = NULL;
+ MV_OSAL_Mutex_Lock(pEventService->hMutex);
MV_OSAL_RWLock_WRLock(pEventService->hEventLock);
pClientListener = alloc_event_listener(pEventService);
if (!pClientListener) {
MV_OSAL_RWLock_Unlock(pEventService->hEventLock);
+ MV_OSAL_Mutex_Unlock(pEventService->hMutex);
AMPLOGE("Allocate listen fail!(%x %x)", uiSrvIdN, uiSrvIdC);
return HRESULT_GEN(EVENTLI, ERR_NOSWRSC);
}
@@ -305,11 +308,13 @@ HRESULT ISL_Listener_Create(UINT uiSrvIdN, UINT uiSrvIdC, HANDLE *phListener)
if (rc != SUCCESS) {
pClientListener->bAllocated = 0;
MV_OSAL_RWLock_Unlock(pEventService->hEventLock);
+ MV_OSAL_Mutex_Unlock(pEventService->hMutex);
AMPLOGE("%p new eventbuf (%x %x) rc:%x", pClientListener, uiSrvIdN, uiSrvIdC, rc);
return rc;
}
MV_OSAL_RWLock_Unlock(pEventService->hEventLock);
+ MV_OSAL_Mutex_Unlock(pEventService->hMutex);
AMPLOGD("%p new eventsrv (%x %x) rc:%x", pClientListener, uiSrvIdN, uiSrvIdC, rc);
*phListener = (HANDLE) pClientListener;
@@ -333,6 +338,7 @@ HRESULT ISL_Listener_Destory(HANDLE hListener)
AMP_RemoteEventCallbackPro((UINT32)pClientListener, &event);
AMPLOGD("NOTIFY listener:%x, we are done", pClientListener);
+ MV_OSAL_Mutex_Lock(pEventService->hMutex);
MV_OSAL_RWLock_WRLock(pEventService->hEventLock);
rc = AMP_DeinitEventBuffer(&pClientListener->hEventBuffer);
if (rc != S_OK) {
@@ -341,6 +347,7 @@ HRESULT ISL_Listener_Destory(HANDLE hListener)
pClientListener->bAllocated = 0;
pEventService->uiAllocatedClients--;
MV_OSAL_RWLock_Unlock(pEventService->hEventLock);
+ MV_OSAL_Mutex_Unlock(pEventService->hMutex);
return SUCCESS;
}
@@ -496,13 +503,20 @@ HRESULT AMP_InitializeRemoteEventService()
}
AmpMemSet(pEventService, 0, sizeof(EVENT_LISTEN_SERVICE));
- rc = MV_OSAL_RWLock_Create(&pEventService->hEventLock);
+ rc = MV_OSAL_Mutex_Create(&pEventService->hMutex);
if (rc != S_OK) {
AMPLOGE("Create mutex fail:%x\n", rc);
AmpFree(pEventService);
return rc;
}
+ rc = MV_OSAL_RWLock_Create(&pEventService->hEventLock);
+ if (rc != S_OK) {
+ AMPLOGE("Create RWLock fail:%x\n", rc);
+ AmpFree(pEventService);
+ return rc;
+ }
+
evl_cache_add_event(&pEventService->stEventCache, AMP_EVENT_API_DISP_CALLBACK_VSYNC);
m_event_service = pEventService;
@@ -519,6 +533,10 @@ HRESULT AMP_DeinitializeRemoteEventService()
if (rc != S_OK) {
return rc;
}
+ rc = MV_OSAL_Mutex_Destroy(&pEventService->hMutex);
+ if (rc != S_OK) {
+ return rc;
+ }
if (pEventService) {
AmpFree(pEventService);
m_event_service = NULL;
@@ -555,11 +573,14 @@ HRESULT AMP_RemoteEventCallbackPro(UINT32 ServiceID, AMP_EVENT *pEvent)
return SUCCESS;
}
+ MV_OSAL_Mutex_Lock(pEventService->hMutex);
+
ll = send = 0;
if (ServiceID == REMOTE_EVENT_SERVERID_DEFAULT) {
rc = MV_OSAL_RWLock_TryWRLock(pEventService->hEventLock, 10);
if (rc != S_OK) {
AMPLOGE("trylock eventlock rc:%x", rc);
+ MV_OSAL_Mutex_Unlock(pEventService->hMutex);
return rc;
}
@@ -605,6 +626,7 @@ HRESULT AMP_RemoteEventCallbackPro(UINT32 ServiceID, AMP_EVENT *pEvent)
}
MV_OSAL_RWLock_Unlock(pEventService->hEventLock);
+ MV_OSAL_Mutex_Unlock(pEventService->hMutex);
return rc;
}
--
2.7.4
|
|
|
Hi Sangmin Choi, upload to /release_by_fxn/swan_test_image/20230613_mantis1496/usb_bfx-ua300_V19.536.29_SD.zip Jerry |
|
|
Hello, Jerry, Could you please build a test firmware after apply patches from CSMSKBSBLT-221? https://synacsm.atlassian.net/servicedesk/customer/portal/173/CSMSKBSBLT-221 Thank you. Sangmin Choi. |
|
|
Hi Sangmin Choi, Please share me the patch file of CSMSKBSBLT-221. Jerry |
|
|
Hello, Jerry, Here are patches from CSMSKBSBLT-221. And, please build this firmware next Monday. Thank you. Sangmin Choi. SKBSBLT-221-wakeup-time-test.patch (416 bytes)
diff --git a/amp_wrapper.h b/amp_wrapper.h index f732e0e..c0c1893 100644 --- a/amp_wrapper.h +++ b/amp_wrapper.h @@ -19,7 +19,7 @@ #define AREN_OUTPUT_PORT_NUM 1 #define AREN_OUTPUT_PORT_NUM_PASS 3 -#define MAX_BUF_NUM (347) +#define MAX_BUF_NUM (30) #define MAX_BUF_SIZE (188 * 128) #define WRAP_UP(a, b) (((a) + (b) - 1) / (b) * (b)) #define BUF_ACTURAL_SIZE (MAX_BUF_SIZE * MAX_BUF_NUM) |
|
|
Hi Sangmin Choi, upload to /release_by_fxn/swan_test_image/20230626_mantis1496/usb_bfx-ua300_V19.540.3_SD.zip Jerry |
|
|
Hello, Jerry, Could you please build a test firmware after applied attached patches? SD only. syna-release/ampsdk CSMSKBSBLT-216-debug-01.patch Thank you. Sangmin Choi. CSMSKBSBLT-216-debug-01.patch (3,521 bytes)
diff --git a/amp/src/aal/amp_client_misc.c b/amp/src/aal/amp_client_misc.c
index 9a82655..c7df53c 100755
--- a/amp/src/aal/amp_client_misc.c
+++ b/amp/src/aal/amp_client_misc.c
@@ -440,6 +440,8 @@ HRESULT AMP_DisconnectApp(AMP_COMPONENT hCompObj, AMP_PORT_IO ePortIo,
return SUCCESS;
}
+static int gConCount=0;
+
HRESULT AMP_ConnectComp(AMP_COMPONENT hUpCompObj, UINT32 uiUpPortIdx,
AMP_COMPONENT hDownCompObj, UINT32 uiDownPortIdx)
{
@@ -448,6 +450,9 @@ HRESULT AMP_ConnectComp(AMP_COMPONENT hUpCompObj, UINT32 uiUpPortIdx,
struct AMP_PORT_CONN port_conn;
HRESULT result;
+ FWLOGE("%s:%d Count=%d Up=%x Uport=%u Down=%x Dport=%u",
+ __FUNCTION__, __LINE__, ++gConCount, hUpCompObj, uiUpPortIdx, hDownCompObj, uiDownPortIdx);
+
AMP_RPC(result, AMP_COMPONENT_QueryInfo, hUpCompObj, &stCompInfo[0]);
if (result != SUCCESS) {
FWLOGE("Query upstream component fail!");
@@ -470,6 +475,13 @@ HRESULT AMP_ConnectComp(AMP_COMPONENT hUpCompObj, UINT32 uiUpPortIdx,
FWLOGE("Query downstream port fail! %d", uiDownPortIdx);
return result;
}
+
+ /* print downstream component first */
+ FWLOGE("%s:%d downstream compoent", __FUNCTION__, __LINE__);
+ stCompInfo[0].sName[15]=0;
+ FWLOGE("name=%s Iport=%u Oport=%u handle=%x",
+ stCompInfo[0].sName, stCompInfo[0].uiInputPortNum, stCompInfo[0].uiOutputPortNum, stCompInfo[0].hInterHandle);
+
/* Setup downstream component first */
memset(&port_conn, 0, sizeof(struct AMP_PORT_CONN));
port_conn.ePeerType = port_info[0].ePortType;
@@ -483,6 +495,12 @@ HRESULT AMP_ConnectComp(AMP_COMPONENT hUpCompObj, UINT32 uiUpPortIdx,
return result;
}
+ /* print upstream component */
+ FWLOGE("%s:%d downstream compoent", __FUNCTION__, __LINE__);
+ stCompInfo[1].sName[15]=0;
+ FWLOGE("name=%s Iport=%u Oport=%u handle=%x",
+ stCompInfo[1].sName, stCompInfo[1].uiInputPortNum, stCompInfo[1].uiOutputPortNum, stCompInfo[1].hInterHandle);
+
/* Setup upstream component */
memset(&port_conn, 0, sizeof(struct AMP_PORT_CONN));
port_conn.ePeerType = port_info[1].ePortType;
@@ -492,10 +510,14 @@ HRESULT AMP_ConnectComp(AMP_COMPONENT hUpCompObj, UINT32 uiUpPortIdx,
AMP_RPC(result, AMP_COMPONENT_SetupPort, hUpCompObj, AMP_PORT_OUTPUT,
uiUpPortIdx, &port_conn);
if (result != SUCCESS) {
- /* Clean downstream component setup before */
- AMP_RPC(result, AMP_COMPONENT_ClearPort, hDownCompObj, AMP_PORT_INPUT,
- uiDownPortIdx);
- FWLOGE("Setup upstream port fail! %d", uiUpPortIdx);
+ if( hDownCompObj ){
+ /* Clean downstream component setup before */
+ AMP_RPC(result, AMP_COMPONENT_ClearPort, hDownCompObj, AMP_PORT_INPUT,
+ uiDownPortIdx);
+ FWLOGE("Setup upstream port fail! Clean DownComp %d", uiUpPortIdx);
+ }else{
+ FWLOGE("Setup upstream port fail! Do not clean DownComp %d", uiUpPortIdx);
+ }
return result;
}
@@ -507,6 +529,9 @@ HRESULT AMP_DisconnectComp(AMP_COMPONENT hUpCompObj, UINT32 uiUpPortIdx,
{
HRESULT result;
+ FWLOGE("%s:%d Count=%d Up=%x Uport=%u Down=%x Dport=%u",
+ __FUNCTION__, __LINE__, --gConCount, hUpCompObj, uiUpPortIdx, hDownCompObj, uiDownPortIdx);
+
/* Stop upstream port first */
AMP_RPC(result, AMP_COMPONENT_DisconnectPorts, hUpCompObj, uiUpPortIdx,
hDownCompObj, uiDownPortIdx);
|
|
|
Hi Sangmin Choi, upload to /release_by_fxn/swan_test_image/20230627_mantis1496/usb_bfx-ua300_V19.540.3_SD.zip Jerry |
|
|
Hello, Jerry, Could you please build a test firmware after apply patches from CSMSKBSBLT-221? https://synacsm.atlassian.net/servicedesk/customer/portal/173/CSMSKBSBLT-221 One more patch is added. Thank you. Sangmin Choi. SKBSBLT-221-wakeup-time-test-2.patch (416 bytes)
diff --git a/amp_wrapper.h b/amp_wrapper.h index f732e0e..c0c1893 100644 --- a/amp_wrapper.h +++ b/amp_wrapper.h @@ -19,7 +19,7 @@ #define AREN_OUTPUT_PORT_NUM 1 #define AREN_OUTPUT_PORT_NUM_PASS 3 -#define MAX_BUF_NUM (347) +#define MAX_BUF_NUM (30) #define MAX_BUF_SIZE (188 * 128) #define WRAP_UP(a, b) (((a) + (b) - 1) / (b) * (b)) #define BUF_ACTURAL_SIZE (MAX_BUF_SIZE * MAX_BUF_NUM) CSMAI2-68-trivial2.patch (938 bytes)
diff --git a/amp/src/service/display/src/disp_api.c b/amp/src/service/display/src/disp_api.c
index 8481b1f..bebb113 100755
--- a/amp/src/service/display/src/disp_api.c
+++ b/amp/src/service/display/src/disp_api.c
@@ -3697,7 +3697,7 @@ HRESULT DISP_OUT_SetResolution(AMP_DISP_TG_ID uiTgId,
(ResId & 0x80000000)) {
DISP_OUT_SetMute(AMP_DISP_OUT_HDMI, 1);
- MV_OSAL_Task_Sleep(100);
+ // MV_OSAL_Task_Sleep(100);
gDispModule->bMuteStatus = TRUE;
#ifdef ENABLE_FRAME_RATE_CONVERSION_FOR_VPP_TG_SYNC
@@ -4143,7 +4143,7 @@ HRESULT DISP_OUT_HDMI_SetVidFmt(INT32 iHdmiColorFmt,
if(gDispModule->bMuteStatus == FALSE) {
DISP_OUT_SetMute(AMP_DISP_OUT_HDMI, 1);
- MV_OSAL_Task_Sleep(100);
+ // MV_OSAL_Task_Sleep(100);
gDispModule->bMuteStatus = TRUE;
}
Ret = MV_VPPOBJ_SetHdmiVideoFmt(gDispModule->iVppHandle,
|
|
|
Hi Sangmin Choi, upload to /release_by_fxn/swan_test_image/20230629_mantis1496/usb_bfx-ua300_V19.540.5_SD.zip Jerry |
|
|
Hello, Jerry, I'm sorry I uploaded wrong outputimage. Could you please build a test firmware again using attached patches? Thank you. Sangmin Choi. CSMAI2-68-trivial.patch (416 bytes)
diff --git a/amp_wrapper.h b/amp_wrapper.h index d3c34e8..72b2c41 100644 --- a/amp_wrapper.h +++ b/amp_wrapper.h @@ -19,7 +19,7 @@ #define AREN_OUTPUT_PORT_NUM 1 #define AREN_OUTPUT_PORT_NUM_PASS 3 -#define MAX_BUF_NUM (347) +#define MAX_BUF_NUM (30) #define MAX_BUF_SIZE (188 * 128) #define WRAP_UP(a, b) (((a) + (b) - 1) / (b) * (b)) #define BUF_ACTURAL_SIZE (MAX_BUF_SIZE * MAX_BUF_NUM) CSMAI2-68-trivial2-2.patch (938 bytes)
diff --git a/amp/src/service/display/src/disp_api.c b/amp/src/service/display/src/disp_api.c
index 8481b1f..bebb113 100755
--- a/amp/src/service/display/src/disp_api.c
+++ b/amp/src/service/display/src/disp_api.c
@@ -3697,7 +3697,7 @@ HRESULT DISP_OUT_SetResolution(AMP_DISP_TG_ID uiTgId,
(ResId & 0x80000000)) {
DISP_OUT_SetMute(AMP_DISP_OUT_HDMI, 1);
- MV_OSAL_Task_Sleep(100);
+ // MV_OSAL_Task_Sleep(100);
gDispModule->bMuteStatus = TRUE;
#ifdef ENABLE_FRAME_RATE_CONVERSION_FOR_VPP_TG_SYNC
@@ -4143,7 +4143,7 @@ HRESULT DISP_OUT_HDMI_SetVidFmt(INT32 iHdmiColorFmt,
if(gDispModule->bMuteStatus == FALSE) {
DISP_OUT_SetMute(AMP_DISP_OUT_HDMI, 1);
- MV_OSAL_Task_Sleep(100);
+ // MV_OSAL_Task_Sleep(100);
gDispModule->bMuteStatus = TRUE;
}
Ret = MV_VPPOBJ_SetHdmiVideoFmt(gDispModule->iVppHandle,
|
|
|
Hi Sangmin Choi, upload to /release_by_fxn/swan_test_image/20230703_mantis1496/usb_bfx-ua300_V19.540.5_SD.zip Jerry |
|
|
Hello, Jerry, Could you please build a test firmware after applied attached patches? SD only. vendor/synaptics/btv-hal-impl/synaptics CSMSKBSBLT-216-Remove-stop-start.patch CSMSKBSBLT-216-thread-lock.patch Thank you. Sangmin Choi. CSMSKBSBLT-216-Remove-stop-start.patch (7,152 bytes)
diff --git a/amp_wrapper.c b/amp_wrapper.c
index 43ba512..290547f 100644
--- a/amp_wrapper.c
+++ b/amp_wrapper.c
@@ -69,6 +69,21 @@ int amp_check_nugu_enabled(){
return 0;
}
+int amp_check_a2dp_playing(){
+ char a2dp_play[PROP_VALUE_MAX];
+ memset(a2dp_play, 0, PROP_VALUE_MAX);
+
+ if( !property_get("vendor.audio.a2dp.playing", a2dp_play, "0") )
+ ALOGD("++%s failed to read vendor.audio.a2dp.playing", __FUNCTION__);
+
+ if( !strcmp(a2dp_play, "1") ){
+ ALOGD("++%s a2dp_play (%s)!!!!", __FUNCTION__, a2dp_play);
+ return 1;
+ }
+ ALOGD("++%s a2dp_play (%s)!!!!", __FUNCTION__, a2dp_play);
+ return 0;
+}
+
int amp_SetWindowSize(synaptics_player_info *socPlayerInfo) {
ALOGD("++SetWindowSize");
if(socPlayerInfo == NULL) {
@@ -394,9 +409,8 @@ HRESULT amp_dmx_event_handler(HANDLE hListener, AMP_EVENT *pEvent, VOID *pUserDa
ALOGD("++amp_dmx_event_handler AMP_EVENT_DMX_INBUFF_OVERFLOW (handle=0x%x, fulness=0x%x, size=0x%x)",
pBuffState->hHandle, pBuffState->uFullness, pBuffState->uSize );
- amp_stop_pipeline(player);
-
- amp_start_pipeline(player);
+// amp_stop_pipeline(player);
+// amp_start_pipeline(player);
} break;
case AMP_EVENT_DMX_INBUFF_UNDERFLOW:
@@ -405,8 +419,8 @@ HRESULT amp_dmx_event_handler(HANDLE hListener, AMP_EVENT *pEvent, VOID *pUserDa
ALOGD("++amp_dmx_event_handler AMP_EVENT_DMX_INBUFF_UNDERFLOW (handle=0x%x, fulness=0x%x, size=0x%x)",
pBuffState->hHandle, pBuffState->uFullness, pBuffState->uSize );
if(socPlayerInfo->playerConfig.clock_recovery_enable == AVP_IPTV) {
- amp_stop_pipeline(player);
- amp_start_pipeline(player);
+// amp_stop_pipeline(player);
+// amp_start_pipeline(player);
}
} break;
default:
@@ -624,6 +638,8 @@ void setHdmiFormat(AMIXER_HANDLE amixer, AVP_AudioOutputMode mode) {
if( amp_check_nugu_enabled() ){
ALOGD("++setHdmiFormat ignored nugu enabled!!!!");
+ }else if( amp_check_a2dp_playing() ){
+ ALOGD("++setHdmiFormat ignored a2dp playing!!!!");
}else{
ALOGD("++setHdmiFormat set dolby !!!!");
ret = AMP_SND_SetSpdifFormat(AMP_SND_SPDIF_FORMAT_RAW_MAIN);
@@ -1145,8 +1161,10 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
(amp_config._u.pADEC.ucFrameIn == AMP_ADEC_STEAM) ? "StreamIn" : "FrameIn");
amp_log(socPlayerInfo->pip ? 1:0, "amp_create_pipeline_bottom_half 4 in, AVP_START");
+ALOGD("%s:%d", __FUNCTION__, __LINE__);
AMP_RPC(ret, AMP_ADEC_Open, socPlayerInfo->amp_adec, &_config);
assert(ret == SUCCESS);
+ALOGD("%s:%d", __FUNCTION__, __LINE__);
}
if (socPlayerInfo->playerConfig.video_enable) {
@@ -1154,7 +1172,7 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
ret = AMP_ConnectComp(socPlayerInfo->amp_vdec, 0, socPlayerInfo->amp_vout, 0);
assert(ret == SUCCESS);
}
-
+ALOGD("%s:%d", __FUNCTION__, __LINE__);
if(socPlayerInfo->playerConfig.audio_enable) {
//??? audio ????
if (PREPARE_PASSTHROUGH) {
@@ -1174,6 +1192,7 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
ret = AMP_ConnectComp(socPlayerInfo->amp_adec, 0, socPlayerInfo->amp_aren, 1);
assert(ret == SUCCESS);
}
+ALOGD("%s:%d", __FUNCTION__, __LINE__);
if (PREPARE_PASSTHROUGH) {
AMP_AREN_PARAST para_st;
@@ -1209,6 +1228,7 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
assert(ret == SUCCESS);
}
}
+ALOGD("%s:%d", __FUNCTION__, __LINE__);
if (socPlayerInfo->playerConfig.video_enable) {
AmpMemClear(&output_config, sizeof(AMP_DMX_CH_CFG));
@@ -1235,6 +1255,8 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
0);
assert(ret == SUCCESS);
}
+ALOGD("%s:%d", __FUNCTION__, __LINE__);
+
if(socPlayerInfo->playerConfig.audio_enable) {
//audio ????
@@ -1244,7 +1266,7 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
output_config.Tag = 0;
output_config.uPid = a_pid;
output_config.uAlign = 2;
- output_config.eESOutputMode = AMP_DMX_ES_OUTPUT_MODE_UNITSTART_ALIGN;
+// output_config.eESOutputMode = AMP_DMX_ES_OUTPUT_MODE_UNITSTART_ALIGN;
output_config.uBufSize = 1 * 1024 * 1024;
output_config.uBufPaddingSize = 16 * 1024;
socPlayerInfo->dmx_output_a.uiPortIdx = AMP_DMX_ANY_PORT_IDX;
@@ -1260,6 +1282,7 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
AMP_RPC(ret, AMP_DMX_ChannelControl, socPlayerInfo->amp_dmx, &socPlayerInfo->dmx_output_a, AMP_DMX_CH_CTRL_ON, 0);
assert(ret == SUCCESS);
}
+ALOGD("%s:%d", __FUNCTION__, __LINE__);
AmpMemClear(&output_config, sizeof(AMP_DMX_CH_CFG));
AmpMemClear(&socPlayerInfo->dmx_output_p, sizeof(AMP_DMX_CHNL_ST));
@@ -1290,6 +1313,7 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
VIDEO_USER_DATA_TYPE_CC, AMP_VDEC_IOPARAM_USER_DATA_ENABLE);
assert(ret == SUCCESS);
}
+ALOGD("%s:%d", __FUNCTION__, __LINE__);
if(socPlayerInfo->playerConfig.video_enable) { // && socPlayerInfo->pip) {
if (socPlayerInfo->playerConfig.clock_recovery_enable) { //???????? EOS???? ???
@@ -1308,6 +1332,7 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
AMP_EVENT_API_VOUT_CALLBACK_FIRST_FRAME);
assert(ret == SUCCESS);
}
+ALOGD("%s:%d", __FUNCTION__, __LINE__);
if(!socPlayerInfo->playerConfig.video_enable) { // jung2604 : ????a?θ?..????.. kec ???? ????? ???..
if(socPlayerInfo->playerConfig.audio_enable) {
@@ -1317,6 +1342,7 @@ void amp_create_pipeline_bottom_half(AVP_HANDLE *player, BOOL enableCloseCaption
assert(ret == SUCCESS);
}
}
+ALOGD("%s:%d", __FUNCTION__, __LINE__);
}
//pipeline ????..
@@ -2482,6 +2508,7 @@ HRESULT clk_pause_resume(AVP_HANDLE *player, BOOL enable) {
}
*/
+#if 0
if (TRUE == enable) {
// pause
//AMP_RPC(ret, AMP_CLK_SetState, socPlayerInfo->amp_clk, AMP_PAUSED);
@@ -2495,6 +2522,7 @@ HRESULT clk_pause_resume(AVP_HANDLE *player, BOOL enable) {
//AMP_RPC(ret, AMP_CLK_SetState, socPlayerInfo->amp_clk, AMP_EXECUTING);
ALOGD("clk_pause_resume Video Resumed\n");
}
+#endif
return ret;
}
@@ -2527,6 +2555,7 @@ unsigned short convertAvpCodecToSocCodec(int type, int avpCodec) {
return AMP_MS11_DDC;
} else if (avpCodec == AVP_CODEC_AUDIO_AAC) {
return AMP_HE_AAC;
+ // return AMP_MS11_DDT;
} else if (avpCodec == AVP_CODEC_AUDIO_AC3) {
return AMP_MS11_DDC;
}
CSMSKBSBLT-216-thread-lock.patch (3,124 bytes)
diff --git a/hal_av_pipeline.c b/hal_av_pipeline.c
index 123d54e..fdaa2f6 100644
--- a/hal_av_pipeline.c
+++ b/hal_av_pipeline.c
@@ -39,6 +39,8 @@ synaptics_player_info gSocPlayerInfo[2];
pthread_t p_thread_decoder_statistics;
pthread_mutex_t thread_mutex = PTHREAD_MUTEX_INITIALIZER;
+pthread_mutex_t main_mutex = PTHREAD_MUTEX_INITIALIZER;
+pthread_mutex_t pip_mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t thread_cond = PTHREAD_COND_INITIALIZER;
bool isDestroy = true;
bool isStop = true;
@@ -250,7 +252,13 @@ int AVP_Start(AVP_HANDLE player, AVP_PlayerConfig *config) {
ALOGD("BTF|%s|%d|IN| player=%x, vcodec=%d, acodec=%d, pcr_pid=%d, video_pid=%d, audio_pid=%d \n", __FUNCTION__,__LINE__, player, config->video_codec, config->audio_codec, config->pcr_pid, config->video_pid, config->audio_pid);
synaptics_player_info *socPlayerInfo = (synaptics_player_info *) player;
- socPlayerInfo->playerConfig = *config;
+ socPlayerInfo->playerConfig = *config;
+
+ if( socPlayerInfo->pip ){
+ pthread_mutex_lock(&pip_mutex);
+ }else{
+ pthread_mutex_lock(&main_mutex);
+ }
// check decoder error
socPlayerInfo->decoder_errors_num_adec = 0;
@@ -320,6 +328,13 @@ int AVP_Start(AVP_HANDLE player, AVP_PlayerConfig *config) {
} else ALOGE("BTF|%s|%d|IN| load volume fail", __FUNCTION__,__LINE__);
startCheckDecoderStatistics(player);
+
+ if( socPlayerInfo->pip ){
+ pthread_mutex_unlock(&pip_mutex);
+ }else{
+ pthread_mutex_unlock(&main_mutex);
+ }
+
ALOGD("BTF|%s|%d|OUT| \n", __FUNCTION__,__LINE__);
@@ -332,6 +347,12 @@ int AVP_Stop(AVP_HANDLE player) {
CHECK_NULL_PLAYER(player);
synaptics_player_info *socPlayerInfo = (synaptics_player_info *) player;
+
+ if( socPlayerInfo->pip ){
+ pthread_mutex_lock(&pip_mutex);
+ }else{
+ pthread_mutex_lock(&main_mutex);
+ }
stopCheckDecoderStatistics();
@@ -359,7 +380,13 @@ int AVP_Stop(AVP_HANDLE player) {
if(logFp[socPlayerInfo->pip ? 1:0] != NULL)
fclose(logFp[socPlayerInfo->pip ? 1:0]);
#endif
-
+
+ if( socPlayerInfo->pip ){
+ pthread_mutex_unlock(&pip_mutex);
+ }else{
+ pthread_mutex_unlock(&main_mutex);
+ }
+
ALOGD("BTF|%s|%d|OUT| \n", __FUNCTION__,__LINE__);
return 0;
@@ -454,6 +481,13 @@ int AVP_FlushTS(AVP_HANDLE player) {
ALOGD("BTF|%s|%d|IN| player=%x\n", __FUNCTION__,__LINE__, player);
synaptics_player_info *socPlayerInfo = (synaptics_player_info *) player;
+
+ if( socPlayerInfo->pip ){
+ pthread_mutex_lock(&pip_mutex);
+ }else{
+ pthread_mutex_lock(&main_mutex);
+ }
+
amp_stop_pipeline(player);
amp_clear_port_buf(player);
@@ -463,7 +497,13 @@ int AVP_FlushTS(AVP_HANDLE player) {
amp_reset_buffer(socPlayerInfo);
amp_start_pipeline(player);
-
+
+ if( socPlayerInfo->pip ){
+ pthread_mutex_unlock(&pip_mutex);
+ }else{
+ pthread_mutex_unlock(&main_mutex);
+ }
+
ALOGD("BTF|%s|%d|OUT| \n", __FUNCTION__,__LINE__);
return 0;
|
|
|
Hi Sangmin Choi, upload to /release_by_fxn/swan_test_image/20230704_mantis1496/usb_bfx-ua300_V19.540.7_SD.zip Jerry |
|
|
Hello, Jerry, Could you please build a test firmware again using attached patches? New patch was released. Thank you. Sangmin Choi. CSMAI2-68-trivial2-3.patch (938 bytes)
diff --git a/amp/src/service/display/src/disp_api.c b/amp/src/service/display/src/disp_api.c
index 8481b1f..bebb113 100755
--- a/amp/src/service/display/src/disp_api.c
+++ b/amp/src/service/display/src/disp_api.c
@@ -3697,7 +3697,7 @@ HRESULT DISP_OUT_SetResolution(AMP_DISP_TG_ID uiTgId,
(ResId & 0x80000000)) {
DISP_OUT_SetMute(AMP_DISP_OUT_HDMI, 1);
- MV_OSAL_Task_Sleep(100);
+ // MV_OSAL_Task_Sleep(100);
gDispModule->bMuteStatus = TRUE;
#ifdef ENABLE_FRAME_RATE_CONVERSION_FOR_VPP_TG_SYNC
@@ -4143,7 +4143,7 @@ HRESULT DISP_OUT_HDMI_SetVidFmt(INT32 iHdmiColorFmt,
if(gDispModule->bMuteStatus == FALSE) {
DISP_OUT_SetMute(AMP_DISP_OUT_HDMI, 1);
- MV_OSAL_Task_Sleep(100);
+ // MV_OSAL_Task_Sleep(100);
gDispModule->bMuteStatus = TRUE;
}
Ret = MV_VPPOBJ_SetHdmiVideoFmt(gDispModule->iVppHandle,
CSMAI2-68-trivial-2.patch (416 bytes)
diff --git a/amp_wrapper.h b/amp_wrapper.h index d3c34e8..72b2c41 100644 --- a/amp_wrapper.h +++ b/amp_wrapper.h @@ -19,7 +19,7 @@ #define AREN_OUTPUT_PORT_NUM 1 #define AREN_OUTPUT_PORT_NUM_PASS 3 -#define MAX_BUF_NUM (347) +#define MAX_BUF_NUM (30) #define MAX_BUF_SIZE (188 * 128) #define WRAP_UP(a, b) (((a) + (b) - 1) / (b) * (b)) #define BUF_ACTURAL_SIZE (MAX_BUF_SIZE * MAX_BUF_NUM) |
|
|
Hi Sangmin Choi, upload to /release_by_fxn/swan_test_image/20230711_mantis1496/usb_bfx-ua300_V19.540.9_SD.zip Jerry |
|
|
Hello, Jerry, Could you please build a test firmware after applied attached patches? SD only. vendor/synaptics/btv-hal-impl/synaptics BPM-20920.patch Thank you. Sangmin Choi. BPM-20920.patch (1,198 bytes)
diff --git a/hal_av_pipeline.c b/hal_av_pipeline.c
old mode 100644
new mode 100755
index 93df252..d3c89a8
--- a/hal_av_pipeline.c
+++ b/hal_av_pipeline.c
@@ -344,17 +344,14 @@ int AVP_Stop(AVP_HANDLE player) {
ALOGD("BTF|%s|%d|IN| player=%x setStreamMute\n", __FUNCTION__,__LINE__, player);
AVP_SetAudioMute(player, TRUE);
- HRESULT ret;
- amp_log(socPlayerInfo->pip ? 1:0, "AMP_VOUT_SetLastFrameMode, socPlayerInfo->amp_vout in" );
- AMP_RPC(ret, AMP_VOUT_SetLastFrameMode, socPlayerInfo->amp_vout, socPlayerInfo->playerConfig.keep_last_frame ? AMP_VOUT_KEEPLASTFRAME:0);
- assert(ret == SUCCESS);
+ HRESULT ret;
- amp_zapping_mgr_stop_service(player);
-
- if( !socPlayerInfo->playerConfig.keep_last_frame ) {
- AMP_RPC(ret, AMP_DISP_Push_BuildInFrame, socPlayerInfo->amp_disp, socPlayerInfo->pip ? 1:0, 0);
- }
+ if( !socPlayerInfo->playerConfig.keep_last_frame ) {
+ AMP_RPC(ret, AMP_DISP_Push_BuildInFrame, socPlayerInfo->amp_disp, socPlayerInfo->pip ? 1:0, 0);
+ }
+ amp_zapping_mgr_stop_service(player);
+
#ifdef AMP_LOG_WRITE_FILE
if(logFp[socPlayerInfo->pip ? 1:0] != NULL)
fclose(logFp[socPlayerInfo->pip ? 1:0]);
|
|
|
Hi Sangmin Choi, upload to /release_by_fxn/swan_test_image/20230724_mantis1496/usb_bfx-ua300_V19.540.13_SD.zip Jerry |
|
|
Hello, Jerry, Could you please build a test image with following branch? (SD only) path : bootable/recovery branch : skb/BPM-20665 Thank you. Sangmin Choi. |
|
|
Hi Sangmin Choi, upload to /release_by_fxn/swan_test_image/20230731_mantis1496/usb_bfx-ua300_V19.540.17_SD.zip Jerry |
|
|
Hello, Jerry, Could you please build a test image with following branch and patch? (SD only) path : bootable/recovery branch : skb/BPM-20665 device/synaptics/sequoia BPM-20665.patch Thank you. Sangmin Choi. BPM-20665.patch (701 bytes)
diff --git a/sepolicy/common/recovery.te b/sepolicy/common/recovery.te
index c2555ca..ebe6e17 100644
--- a/sepolicy/common/recovery.te
+++ b/sepolicy/common/recovery.te
@@ -27,7 +27,7 @@ get_prop(recovery, vendor_platform_prop)
# SPTEK add
####################################################################
allow recovery self:capability { net_admin };
-allow recovery self:udp_socket { create ioctl write read setattr bind };
+allow recovery self:udp_socket { create ioctl write read setattr bind setopt };
allow recovery self:tcp_socket { create ioctl write read connect setopt getopt getattr};
allow recovery port:tcp_socket { name_connect};
allow recovery self:capability { sys_time };
|
|
|
Hi Sangmin Choi, upload to /release_by_fxn/swan_test_image/20230802_mantis1496/usb_bfx-ua300_V19.540.17_SD.zip Jerry |
|
|
Hello, Jerry, Could you please build a test image? (SD only) syna-release/ampsdk CSMSKBSBLT-211-ignore-the-request.patch Thank you. Sangmin Choi. CSMSKBSBLT-211-ignore-the-request.patch (1,072 bytes)
diff --git a/amp/src/service/sound/src/sound_hdmi_mgr.c b/amp/src/service/sound/src/sound_hdmi_mgr.c
index 55051b2..5bdd01e 100755
--- a/amp/src/service/sound/src/sound_hdmi_mgr.c
+++ b/amp/src/service/sound/src/sound_hdmi_mgr.c
@@ -786,11 +786,17 @@ HRESULT snd_hdmi_mgr_set_format(SOUND_MANAGER *pSndMgr, UINT32 Format, BOOL bPlu
SNDSRV_ENTER();
SNDSINK_CHK_NULL(pSndMgr);
- SNDLOGW("LastSetupPortIdx %d,"
+ SNDLOGE("LastSetupPortIdx %d,"
" UserHdmiFmt0x%x, RealHdmiFmt 0x%x, Format %x, bPlug=%d\n",
pSndMgr->uiLastSetupPortIdx,
pSndMgr->UserHdmiFmt, pSndMgr->RealHdmiFmt, Format, bPlug);
+ /* when user prefer format,real format and wish format is identical, do nothing */
+ if( (pSndMgr->UserHdmiFmt==pSndMgr->RealHdmiFmt) && (pSndMgr->UserHdmiFmt==Format) ){
+ SNDLOGE("Ignore the request when all cases are identical");
+ return SUCCESS;
+ }
+
AmpMemClear(&stHdmiDataCfg, sizeof(HDMI_DATA_CFG));
AmpMemClear(&stCapHdmiDataCfg, sizeof(HDMI_DATA_CFG));
|
|
|
Hi Sangmin Choi, upload to /release_by_fxn/swan_test_image/20230823_mantis1496/usb_bfx-ua300_V19.540.23_SD.zip Jerry |
|
|
Hello, Jerry, /release_by_fxn/swan_test_image/20230823_mantis1496/usb_bfx-ua300_V19.540.23_SD.zip This firmware didn't play VOD. I built the ND firmware which is applied CSMSKBSBLT-211-ignore-the-request.patch, but I can play the VOD. I checked the logcat but I didn't know why. And, the patch doesn't look related with this issue. Could you please check your local repositories if there is other modification or not? And, could you please build this firmware again? Thank you. Sangmin Choi. |
|
|
Hi Sangmin Choi, Which branch are you use ? BFX-UA300_5.4.0 or BFX-UA300_5.4.1 ? Jerry |
|
|
Hello, Jerry, Please use the 540 branches. |
|
|
Hi Sangmin Choi, upload to /release_by_fxn/swan_test_image/20230830_mantis1496/usb_bfx-ua300_V19.540.23_SD.zip I remove all modified code and "out" folder Jerry |
|
|
Hello, Jerry, Your last test firmware still can't play HLS VOD. I don't know what is the problem in logcat and the firmware I built has no problem. I want to check if the device affects the playback or not. Could you please give me the following 3,4 firmwares? 1. 540 / CSMSKBSBLT-211-ignore-the-request.patch / build by Sangmin / ND -> Can play HLS VOD 2. 540 / CSMSKBSBLT-211-ignore-the-request.patch / build by Jerry / SD -> Can NOT play HLS VOD 3. 540 / CSMSKBSBLT-211-ignore-the-request.patch / build by Jerry / ND -> 4. 540 / without patch / build by Jerry / SD -> Thank you. Sangmin Choi. |
|
|
Hi Sangmin, I help Jerry build it 3. 540 / CSMSKBSBLT-211-ignore-the-request.patch / build by Jerry / ND -> /release_by_fxn/tmp/CSMSKBSBLT-211/3 4. 540 / without patch / build by Jerry / SD -> /release_by_fxn/tmp/CSMSKBSBLT-211/4 Please check it. Thanks, Jason |
|
|
Hello, Jerry, Could you please build following test images? (SD only) Firmware #1 540 branches clean all repositories Firmware #2 540 branches clean all repositories apply following patch syna-release/ampsdk CSMSKBSBLT-211-ignore-the-request_v2.patch Thank you. Sangmin Choi. CSMSKBSBLT-211-ignore-the-request_v2.patch (951 bytes)
diff --git a/amp/src/service/sound/src/sound_hdmi_mgr.c b/amp/src/service/sound/src/sound_hdmi_mgr.c
index 55051b2..54f3fbd 100755
--- a/amp/src/service/sound/src/sound_hdmi_mgr.c
+++ b/amp/src/service/sound/src/sound_hdmi_mgr.c
@@ -791,6 +791,16 @@ HRESULT snd_hdmi_mgr_set_format(SOUND_MANAGER *pSndMgr, UINT32 Format, BOOL bPlu
pSndMgr->uiLastSetupPortIdx,
pSndMgr->UserHdmiFmt, pSndMgr->RealHdmiFmt, Format, bPlug);
+ /* when user prefer format is RAW_MAIN,
+ real format and wish format is identical, do nothing */
+ if( AMP_SND_HDMI_FORMAT_RAW_MAIN == Format ){
+ if( (pSndMgr->UserHdmiFmt==pSndMgr->RealHdmiFmt) && (pSndMgr->UserHdmiFmt==Format) ){
+ SNDLOGE("Ignore the request when all cases are identical");
+ return SUCCESS;
+ }
+ }
+
+
AmpMemClear(&stHdmiDataCfg, sizeof(HDMI_DATA_CFG));
AmpMemClear(&stCapHdmiDataCfg, sizeof(HDMI_DATA_CFG));
|
|
|
Hi Sangmin Choi, upload to FW1: /release_by_fxn/swan_test_image/20230904_mantis1496/clear/usb_bfx-ua300_V19.540.23_SD.zip FW2: /release_by_fxn/swan_test_image/20230904_mantis1496/apply_v2/usb_bfx-ua300_V19.540.23_SD.zip Jerry |
|
|
Hi Jerry Please build test image using ( 540 Lasted src + Attached patch + Attached APK) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Patch apply method copy file 0009-auro-use-headroom-for-demo.patch to "syna-release/ampsdk" * use below command $ cd syna-release/ampsdk $ git apply 0009-auro-use-headroom-for-demo.patch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 0009-auro-use-headroom-for-demo.patch (66,403 bytes)
>From fb13ea7dc3bfced39f4e434c0372c2b9509c69f6 Mon Sep 17 00:00:00 2001
From: mclee <mclee@innopiatech.com>
Date: Wed, 11 Oct 2023 10:20:21 +0900
Subject: [PATCH] [auro] use headroom for demo - news(x1.2), music(x1.5),
movie(x1.8) - headroom default on
---
amp/src/ddl/comp_app/lib/libddlauro.so | Bin 71628 -> 88756 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/amp/src/ddl/comp_app/lib/libddlauro.so b/amp/src/ddl/comp_app/lib/libddlauro.so
index 90f9d03b6ba60c0d85bcbdda3d74a0a9a739fafa..fa6224bed29959c50f94297e1b532ab0ca22ea0e 100755
GIT binary patch
literal 88756
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
C?{owJ
delta 27508
zcma*Q3w%?>@&~?qPBuv&p{Gw;C^RLdFPe}-kqQM06ev)nK!FM<ZzzILpeV{Cp}dus
z1`R4#su#Vepw;5z3Mwipdbx^<ii+|m6$HGZqM~xm|2vxv4S0Y5|34p2W@cx0W_EUV
z&Ynlg?&rn9XH1(?B8nL+V2mA%yQkeG&!t|B(P2UhGZ^Cpi<=K`Dr0mAY7g-z09S`S
zp0VnV8Z)Db_!>a+yyjycXgY{bHikFVOkvePf``WJKEZp5Vzd<d26B5*PsX0<|B$!1
zKV$Xv_1-E#qPGuW>`(+_(d9upd1R1Z3P}7}W8k~*LsPtOAFuY@19i+xU*uFA`wTE+
zD2&3rI2OfXG0fwm7|X-3h~5Z#%0^9k7>ky-Kp*JH*@0&mBl<V=-vN09LdxfXzj+vA
z39A3ipeZ5*Vwugu<^ih=Q}`(8sxbOf(3_4m8~6?#j}Kt1#1b@60{(s&Oh!97cnj!p
zVf`1Qy&5!qXn=PC+UH9Wv?rD|5?+iLDTPa*U_zLJ=Rs41LL;QPv8tmLV5GgcHvqGy
z+t&~*sP__ByDviL%xg^`SsM;aKTE=KWNu|@a^;c@r3a=2R(Ni-G<<ll&jakYh&!V1
zDIQyK+vu+AywTPbs{L(K!ZW|W*S+YS-KBLeH{QFrPrpyjZ#Z}S<{y8z%zLe1@5I(n
zNC!EEoRU!hkRLKkA4;guha4bB=!5aH`~-<I)&ejNM@vQ1$moMal9?I<n1UnG*SlZV
z{X@9*dL2~g6AgsM82Us3i3|}6#wsZOK38zx8?Pt(9ySkYGrjkMd2>eGKBH!G6`S6-
zYU1o0=CSEhsd31hDZXKrc;9f#SPzx}Ic8GOs$jH&hJpzSCM%e#pk2WX1+x{*Q_!to
zfr5n!7Afc{R!E70r3#iQSgv4&f|Ux6Q*eTUQxvRHaF&AA3f3sNP{GAP=wV*futLE#
z3a(RdlY*NS+@j!C1?v>tuHX&@cPdz~;BEz9QgE+?9#kgPuwTIg3LaGOkb;L5Jfh%H
z1&=FuO2IP<o>%aKf)^FMq~K+Ou+P|Bl>-V|6^vHUP%uHkWCc?dv@4jQV77vJ3c3|6
zP_R(JB0vu%U$JT^QLt3OG6l;OtWdC0!Ep*sP;iQZRSM2huv)<y1s5u~crNqE?DwjM
z6$-9VaGipi6x^)f76rE|Sf}821$QX8Q^9%#cPsdkf_vv8{uF_Is$su^2NXQ0;2{MM
zD|ke~qY55Z@RWjQ6g;os1qClEcuB#_9)&QRE@d51(5hgxf`)<#3LXJW#EIt&LDZyE
z1W~Il6GTP3M9^UD0>N0u&J&Dd>>|NL#*Pw1)hj$s2ufl!P8><7rv^dP&jf-fgvkU^
zDpLuf7WaOLFRQO#zQVUP+U0xB73b^rcDyeyE4kq&+v}oXK>Q`WVS39ic|(25aJ^wg
zn}>DZ*p}%HmFYil-=r1^zPsN}@x9_$(Qso%AI(>vlF)E06G&}LQp50^w%pfhZ<~e}
za=j>`yOVsbClY)?`h$?ItLooy4_(7y8`fzsN#LAyTN;#=C@+;DgCZ``-NIH^JO
z&C-0i{o3AJ9?j4AY~?N69G<qV$vk1(X~ynvVywIor-R7-=50;=>~)R%e7(!ldi-c+
z=ZJ$aMsB%oTT_{R{mCd+*QgnFjk<f|@&8DEUE_Ji&Mr>c)}(>AFmqcIch@!6`2JR&
zmeQy+;0ztfitA34LVqbF2m3xLPwV|}#l_hw(!}acJi*zy1Z9V@^-W}p>~Pq7Tgo19
z+z(q9@7vZi6ub+*xf2{IChz*DhA>V0x&%Gl>zg~Q<<OnrY){<Q^i9mhlix>9xY(`5
z#*^jteLr$z<MHnYO}LoA)}PF<dry|S|JJlIx6efb_{KqfE;4)F3FcnbWQXl#k)Q#Y
zQS1ADSR$Y5yLGrdLz!HyoS#h2!!$We&M$$ZR^Pzk4n7OwX<cqr^0z{MZ^5>v12K_}
zta!bYH$i?f<ae01H6<A9PcpXcbgF$*(^lW>!&^>WcTKAoG)Z&{bUd+eJK^Pxk##hY
zcQti__F31+PY9E*tO?3ns!4uz6ZW_`S>NAO>gzEgjjtq6)AN<5`D$b~jO<e9;K+6a
z0%zxwR7$#%N{7@I#l<o?dxzx4D{efv)ryPNcXlap`v}FQ#41(XP;${^bMUP=cq9e=
zzNQR&>n6<@c0BdaVC}-jSFFP9n_ZElS>t^-jB3j_kj~6wBABel0s)y!dl)<SQm3HT
zqu@1T4>s+L^Yt8&6cNhC`>11&w^hftRmVrsah&Sd10B84MEfAx^w56Lj$;ZA`SIN}
zvL(0so*mcHcVVQJKP+8&L}`3PX+$cVJCq-EC0V-SZ`vPAuE<W?sZ*CVs?!?P2`0|f
zs7`@D17~$gzzKDYhOxdWdcu0ly1%K?_u);cCakMnq#}K$QZZAh7yuPkrQ#%1FyF3G
ztvzR0Fn!pj^-Z*P*aUCWZmcFNl8{zhh0-$p&p_lpck`;JiJ|1408RUlXFG9hL$o)4
z8whkb9taEq{Ow{O;5!)z#GsvlHlGLt9{M^E*mNck_~o}i;8<h86WBjQV;`Ol1l)i<
zzYGNSmuW1|%~;Q)fxuSaR^XRAGB)(nKwuW=<G>H&=mBL#pr5)B2wWVbvE83QF<{-<
zK;ZH~jTL+t2y6kgqhAJK+_^xYI1jsW9O;<dl~^aq%=g~tR&5Hh8GH1nK;W?YTo~&7
zHno2J$-{?+ob>vB8{L{$`6iB!kElewI$%dkWIg=N)Lakq{zpChS@Kbrkm!c0htaAY
zT7By)(^AeV4Kf4E>rNaM+nSD|I=wIJ;bFz4dMHp2>jQyvJ5)8hwjTal${ue#09$MB
z+t&0EW^M)QVTZ(jhG{8Ry~}*hPH5?Q4x9p5i?N{=<_2qDIotOm)jz6-R0B0u(YO)y
zE*fomIg%bVP)n_Aq}u515Y?EB^rKo>0GME3-{b~NEnnZ1XZV`(QIMz@;dC0wFuL>b
ziI%m>EZ?HxvF-0t-ci}4F;2r6x1bz`m(6v)VPhQpC(3DCwUVc@S?qgcOiNGRHRa77
zR^G@ul{I8gq;ZX$DNOG2<X{;Lp8r<KvUx$jy7-;~9V)X&<Ad_t*yigx*2WL|?wORv
z`}#f{mzG|jJfw0-BQh|e#j2=Lx%{2R(JDhpQMpW2Tq>75+BbW6+Z5~^<f)eG<waF|
zs9p+R>`iGltKw3<Jm~8^F5YZHOO(ksW?ZWjV%81c)+EYN(ornUY*?e6vE0qR_2V48
zhH6tp2Xv$v=}79*Ki7lCuui1M&;J=Xm!XUffyV=BT#4^0sdpg7*nRTsf5dmsl=z%C
z!FiSH*adrI==e)z#7Si*%2OKeLN=X`DQ%A`o6BHxoT^PJ&{e@zRbrc(%4EOp($~9G
zztyVWH1xZSszmwnCo0iJU;fQ$9${;)U$?6s%m0u1MJL@w=y^037xp;zd=?1Yj~ewZ
z;53w&#P0%uXTCs91FfOG-RFV8iwM=dUj+g!ehdVDMaeqSPh(%9#uWh$`WQ9sP>IG0
zQB(#U4g_`pPXKPkG4}mHU?J%9S-5q9V<423f_@PNu`ZLb?+*n6RVYM9`)F+IzXO42
zz(>AEZEVk2U2ly=peF9kzzOFd+De_@T2Z7np-7p+Cj4@5-^0@~#lUpdc+@v+dYYE4
z`_4{lt7YiE$mxCbL|2_}==Ag)vx*BPQ3)a+ea&u8ll=Rd@_ez=Tl(s!XNb|zc-hyx
zs<oMRe5W+u@6+3A$2DK8s&@LMbmr?-mF{^@Yp#ilF)tylp|i!?lE1kr+GyRxS^04*
zPT}q~uUHSFz0QIAJ2(=GHFi4!u^wlU-FpIo`d%8_g2M{l_a6iT0_}Mp1p?V<GjObF
z$JlhVFFA(D7kq<A_S9Gakxs;vRGkk5LgjobA~j_*5(}ruh)uNPd7#P8qM9nO3kvRl
z{8-}Ujj$70K1FSZ4cZP5Yoz5|wtZWZ+*uh9$~N2rj4WNTt;y=8rM9KX#5}`JR4~?R
z6Kc!*h}OD<ZB1S`PSlKcts9S9*!nZcVR80^MQe(xdg1&<l3&+&J(m7%)Ss~(>l*7(
zd;Tw-JOLAPi&9F9d<{xVvhRl(@t%d~J{K<4{J(Wa@6oC^os!C^w{kZ$fhgu@i=b-(
zbQS)8=t5$LE*Nf(H2#M&O!T=HI4dv%6LHO^4om6WsW@Cc7~4*}?e{ccqjQqBxHLhy
zAd~g$fQIuiWS011C&YWgU2UgK*Fuu2@Sm3h=Qg9Jkxclxb0O7SR&vs0)SWOvvx%{8
z4ClPtWWS0=OmQnZzv(#Z(-w=)akS+sQ=SzxdzN&SYi_vahR`eI+SG8@E@A&ngQ!%l
z9foU{u>h}i?FP6;d+`gg!61a0l9qB*5DueM9)`>tWT{8Er7x5vj7SFI1z4*4AC_=>
zJX;MdyL>~Yx11QR0rzyJukE3MibOb1o}y7a+ekkjY%2Ue{0wbwQehz#GVlClvUVsd
zR^{gk_<07!<JyQ&4n6`|x(*nRlf(gRUFTy->^GX11S?*Hl=<sY!`*5*l0<p>+Tv;2
z3<H!2G>m8{%TC8dI}Q)Z?kp6J-}VLq37|WJwu62hrP>PmG)nJboCho~W1EQ+tF=gD
zlhIa&w#leW6S`|`&%XkJ?KnT2!<O{idpJL!Y@a?52%PDrvA*EtedP%RdcFb0XjlY+
zDG<m3qa|<#d=btYAH(oI7=9NO&A<q0Au!_}Y`45{ysoh=7DEYcu1AM>?DZ?{d1$A-
zY^d@LI5y-YRlPMROngG!3C)AEKdYvkrZTvxsRorQXyC)9Stw~#@{pwQvb5Q^;F2q<
ziPl8L=50-((n(2NgtqeSsx0D?irNOCtxQ%k((RLN!_ijEHdD=SEN7bqDqp!i1C0e0
z+nS;@*66O;*0dRmQ<MiU@GaFFkJq7GQmG4FilnJIj8e+Vjm=Hl?VFo+7H@94i1IQ5
z@}Zjq1{Nymqnt@ZzvVG?jYN}9wE0%wX7fZSeFFOG(VzI#pZZW*2=H+?yfKOuH%3<%
zpTyPi*>cprrO3Im|55wG`~QfGEeb|^=+1y{($^OK?db18|J3+xp1;)ba0Mt+!Gwi^
z&=wHRoV|d;qUGT(3yO;u!3jUNg!lhQ^{2t@N97|2!ujvxUgEhH)fioMF_d76)hXG+
z>UikN`a>wuqDM9E#FTkkN8vF>Io}irwAzlTv}1JZf!EWtMwU0?fkI?8oQrG68fU>d
z9eGC1k&~en8ScQ7gO!ICbR;FjEQF^N{_q;T9dc%O-HF+_XG7N~xaN@8D^+aSNy_0(
z)$5yl2N&mg5-@k(+};-jyYEakmNv65YqCNya;-5AMkx8x0BK%uO2vNrfu`-MYL%dn
zlj6`R29MAp<%&VoS_2s$<}4IyEG|@LU(<@K`+BZ)euRn)mRl7%S3&6hu+Dfmg3b>%
z6<yu=N?+^}WnVk`+95L>;S3q3{X=*NDYQdX6qA`Fc-ySQAAxg6!-^Xv4PE5>;lwFy
z-{L*tDzJcMno*kUMXzhqq!9dP@2qQ_K^uGodpbed=xcZshFc-1fburT1w4B?gQFft
z9gc0dPKZGz^P+5S0X-h{2iPj#@CG(%>(G#fhK*?W2sLsvYU7&_p7S>9=qrK1a=`Dg
z=bi+af-V}{_*NhgfTFdiuX_tL))Mq;(3gOZ0RATMclHMYT>)D?7rc%)9d|adZ#JIf
zXE&TY|I4dQp=<lYhkZ|aBTM;v>rNj2Wv^^zZ$k|9fotf!*U<IX(Az;bq%T{c-@D1&
zkhJM+jIX?(;ThEd_ZK?h*(Y`>cei6~Dayv1F^uIP<(>h(23x3I$i1<+f8Edpx#+-y
zyRMAA)g2K;nm*Qpu?@%)ANc11uY<0ifV*)qcm($@20^w0y1sy}JSSuSL|J(pW#%!o
zosYq)z5!?4uc71#bhzkZ>>+fx9cdMZx&8%h{R}9>42;1|6gxdShLWG4fX;wZ;rx&U
z#y*4mO7O;J;dVFn2fN_(7q~!KhTQ)K$5Xku283fv;ry%6_dAT=6~)*MX?Q{~8yk)$
zbkI99_8$m*4TcNbl`crdQE0P5=?_reD}%A;VQ?+rBZv|Q{s^4!hA5mvWL}4pW{kKU
zbe)0Di;!6d9Zx~ma13TA9Nhuf3Q0N_@<ZU@8V^QsiiBY3V@$zqV0Ol}^L;S-3zUz>
zX!=~o*gY^(itXJUDU96<xE7s%hcbbPC1LarKrRzC?N#vmVfr3N<=BaSN8#)awBLlx
zp9JR)LU$8v_QgJ^Euz>;q%u|u;u0Ld{bY6-iUvXHh<sntqeF2YQ$Ahw`fh!+<)A!7
z1`CP7p1h&R=Hv1QI0h^q)?#Ob2id^~x>%uXze$!ab{g$J{~4H5sRtkUp3?C!wr89%
z4x(2b4W0h}IQLl}o8>#Q-Q7_0*lg~5?sTHB#Xq8aCm(Owkn)c$n(yEfMZRaBXx(6a
zGD-LK*p=@~Kc8eRn>wwg&&0_yeTU4geQS1&Z}@drFWoo%*}wbt9ZwR&XH2iEX}I_-
z?m4u1p_?!8eA|Z6FPzpI`v3DI?#tif_9gF0^VRHmprO^?cpgzTb>b8@a^MXW4TE3V
zr!^$+dz3f4@%mGmZ`k>G-`4$B^iMSRojSW_>O9}y_a8L%9yxrdZ|+mA8h(9i3imC1
zr+_^2Z8&Xic>bMVw1(&2dxHDs9L$cNh-bs&C*w)+?5VTH51cZ-Vor6#{Rg+`zQKof
z`do+FH2iufS@#V%+*bB)f4H4*>fyBwKOR1+HGK0K9BKF>mHW<qIe^$E8gPUA=pfDa
z%-6HYBj3ia?ez4-S9r|VaOl`)Jf>sSoLi@Mymj)dsZ%>v&%4F%?#c)FtFPx)-+ON*
z_?}OR@g2*w_zs+?GfkT{XQFS~$r9gJCp-C`JlVM+rty&0aK33cg}<%TKH~KFhC`=^
znS4FY4}$}#z76Nsd+f!?a2y(QZzEV-LV2;|0ILMz?x%=yAeZ|q0$CwH8O12R1A<*u
z6FZ2uyxvrxE6xMB`$)8;FJmikpmiP89>f9k0)U510AB&HKZu?I$c8Pnjsw^lL_-FS
zLM!>Gu_Xy17YPq}NO(xL6xPW!=?BOTnx$Uk1zHc5pmvZOz)1ml0hAmeFMyIG<ONW2
z<nq<dxYf8|G&;<g=rCunR)Zgk)Jr(9B?vX)RT2-o9Bea{qBxXELuCL3LnK-bP;-Ms
zL!C&l8V5}n!2(Fj2@7?TM5v=ALS3y8r}t~9t7`MGdNdjX$;8Ox02zZMS~!@og*ec<
z9R^NG&qmh3o!!#2k;eh-(zB5v^@q@%yrC%wIU}b=4I+GMieQFpcwm6+qy`O8xAGtw
z(wd<>p%{m0jSh{F+C#GRvQIq@#CSJA#Rx(xDgmNLNi-xlMKx(2w!{cEE=1!&*=3}?
z0&&Ly@3sJ(526z=)ZIAH8tOx@CtZ-b%LyD9EzJ~G!s3k*%?2nNBhe`UYl3JUz<xqK
ztil)z2^{cr3c#!&`d0(P$iO9O3tz!cv-#n~y)3y`IX6yvG=e-T#lhK#g#c@UDB>T~
zV}(>S%6M32u>aLo2%l*f2zqi2AdQ3YdO#Wn;h{kg9`chSK>aXAiU4&3iU?R`H{cC%
zKYzhRFP!?ad|&^P<jEFHYpJ*B7S&x0jK@}{fTh}+$=rggxE&yz+|133=X#4ML46r>
z+L+#AU_23pQP>rPk>GYr0v9}R+_G0xu$L!4o<}LXQ_Cx8=PR1gq2P+Ds6wdf5)V~H
z7{GP7`eR*b?1fOG+_)Y}6v|c=1ka)P=JQO5JZq5<jMQvwqUbY$=0z*QCICArra6R8
zuc_%MH|%xnfp}ZZG#9vux70*DsvHx$un4&506m&`0wTH?918)l1hxb-e}*la#iaGf
zz_x=lW(b{4K+|RrPe($$!a^nCfChAs`9L)6Te-H~$=Hh|-d^bRUYmuCW?&Piuha%Y
z)yKrk6*|4LX89V#W2ld&)>h5mT``?Pr#JSr4|=Hvx6tVgJ8d?qZXDvI<-ij!-u1$z
zHjB)}7v6O<pYp(8Gmn~tF<32H2bh$?c|xZb{<NY{Lr0<03wqHH6e4J(E?elcpx-tX
zL<@Q!&$0ktX_yx4x|lUKEH!JU5s`x{6f|31^2IgwD~4_Dl4snaV;5%y-oxWIR>Ouf
z0>r=qqiZ5M5<a5P2z0<!jqtHW#%)m8K={;RV;MTXN%+zdV<EPB#R#kQu2N?C8J2P|
zNoHqko;l4J)e0#BgXVV3@LY%OBH`@~;~$v{&rC2L_h39;V&o(nwD+Unn)9-m1-Il`
zU(B*-7i);t#%4?}O^Rs4jFX75#M_z-fl)|2&1$sB2`U!p(aeS$ysQPq+HyCrZz(Oh
z#2S`1#%&1oJ~Ub2R+JU<|0xk2OvZySagOkO>lIfl1yJ=C8so@F{2^e>_6fcdY+q6<
zB}P2?tXLP&m>5s3%yyXsEC^P7nHjVt4(Q7<$bcu4NSP@jUDOxiq{PIXSXEpM08bN}
zu*cO!9llLsEK*O1W9bNqm=D|{e#1Ddq5%<)5CwgZNa8)<QR2%Uz72o0^9)D8;>67e
ze7rb=C?$wz5z|C598pRVH=sjHF$B|{EdGwcril09Vk?n{iEb^5;7O`@9){b9m^AFT
z1zm2XiI1_!>|!a>I9;rR6Ya!WXmf~DFq|Py!S(i{0m~s%EcGC?S>kS(&lbO8h3AMD
zFxR=_1$65mRzO{z_yPu;q7gfHm)MDA*HLVM({6D)oXZzoVYrhx0(G6m2XL`KtV8B>
z5xY@kt`pBgb64>US_;LVaO-;U2PC_R35Z;GaV!&)StKqYTs?%V9UgOw$xzozBq1+~
z#iuA7y~Q5nTOV-(4)ql+a4AtDDj?ZUe1rD>;tQxAARdD&rJ^T#4HRb7r9t8p3=bAA
z>|n~ojrblS+IPkknZT1AHdN$8rd-&InTHJ%GZDt&;&X(3gqR5x6(at6#zu-2=r&3`
ziZG5A_d=#pJcVf8C=TL#jCdREW5tkSY{EoBJ}!Yo1EO-Xh-#1PdtuAMq8IIZGB!~(
zpzkEn1uc`s&*(cvynyMLDz?IwXPVdrGt)&EsHhT~5tbR^b9A^x3_$0Z;!`M{B|bth
zZxtRGn=S4}gyx9uaIsqa1VwYjr<jy^;vyWHFLr}lBmRK=0&xgYxlK%i<n7`~^j#>H
zAaZwzW01L1XebbiJYqZyFBVJS-4gKyJX$JT2$4tN<ixyOJcS<1xZqfpwOq7l&De4-
zK8DLHxL6O(E4g?YS+a^V+b}cM?<jm(CgN*(1hTw;%pNccqOy#CLC;AvN98ah22kQ1
zOdjJ7B=;p^U=4SJl@=D@U89YgF-20Shhcmc>fAfQ7=`!_CYe6TMo-kTnS}REHSR=e
zoFcp=!{~?hWe81FKR2^{2j$nHQ)IC`M|6W+WVS_zXe%>b61JsV$joyXOLT@M1<k(>
zU@RuxlHn@}WO#a^r!FF*u(+9J6mj8;kru26Mr$EjVzR^m^ybWR8~9J+{F0CnGX`d?
z3F*cPg!gVVCpZw7`+-zrTI16#j{xllnK(zRH7?E2!G0A@ap}w$hD3dr@OF5HCVl3)
zxC-uRdmoLK&+)YpN+Y|;)8b%+IWoiYJzBp-@+75Oeh2yq&_q{kbYhNi5U2yONbJCj
zO2qeT_?wt#GJ0Z2w^6&($}BD*_I@C;Y@MksSRilHus-5T(7<d1@!jGEd|7V9R~9-a
zrpH<n+Zb&~j|MW08UMoA=aPOqf<;lS!Xzd-EbGuE!j4jw)l#w%GgHfUVkCTLg5w0n
zMLseM=f-+S1}iXC<oJCa&?x8lwj9FObPOORC+1_=v8J>$K10}lKyyk4uJoaR@+c)6
zwlAZRZmuNfN`pPfU~)V0Wd}0Y$xa5ji)#09WVtRL$pT-DMAisq>jbZ^xPbBZAunwM
z@ZEy^uni06v-pXUJq_QMx%he*>D<Z@a|Z@KtCihIEydbEb1P&`#Jxb0X&=#=neRs$
zm`t{Z(R9Tai+>s<vr&v}FG-FEYf+t?4qPpIM2dceZ_62c`H>Q>N5?L1U2YU$B1uK-
z;g}KFmG}sgTu~CQ2(C2B_0}V!4KLC#2d9SCqYP##0MZKzT4zU4rg)UUwti?2bCfbl
zCJB=P{;U|IN!=;3F<d5|gfCpIhFVRm#c*}8l}0N{kSapF0IpeBk<u1%ktR|+hDnGJ
zzvAQ(DK?{5l+e0hHHxS_<eyF4iY3@W_@F38&|_~yXgKr5iXJI&NjwhK@uClAK0#z*
zP7}r3n9U>+4+CC13og{u1%j#*6HB3si$rMAL<<-(iJOocLVSciW^p@G#v;B(R#`;~
zxDmor4xb~%3?x^SXpbhFXqiX8%|N#p(FFz#F#)O#u>dW)IE&74;&o&}f>@50L@@+z
zCJ8%C+Qru}lP+F>%k4xyv^hjcBAt`#5rOui2rZf7b#UFH40yh{=z+RUVx*nUu9y1I
z*>yW6yNl=p!`F#b$k<{Lfy>0+Viug}Bj~nfUoj3&mk6yJN{sjxCi|-}wCOGAP9GD~
zA;862B$p;~;h8Qb!-PqE2-`x?X5K8WL%YQz?9gac{oCe<PDF|f1lJ_)M}J+6g{M(s
z0W?~~9B7FVuVFNu#cJSP#d@^&5?c_7+l3q1;Sn{6<%_zAg^|~EQ3Op5(c&|7X*kHm
zTS$%<0oP)lUW*o$9;D)Hpluk-iyv??AI4sb5eE_9*FZi7?Ju6^;vxq5;$<$LL2zCJ
zJuDFrbT)PSo(sCi{$hZOxNNk8-Ui=Z13e$=2Z-%3w!#oO@MwiwY=8;eVYi6o$Oezs
z>$QtlWN`LF46Y7@7`eI)ktA2^F*b7XIN0Q(n`{7{hL7aiI@loJ1|f3f+ney2eET<i
zCEp%}8S<^ffp*ZRh#%lADH8MQF{M44vK^_<QVzn-GOzc{qLd^sf><dcS}WVW#>_33
z*hJ`AA+gSo^LkgHM^iENAnXyWuUd(j+|+~GUV#1;68j1RT`4gKvV4_yg$L|$FtS=U
zmY{Ks#OP-4T8Zt#@HR>8Jz)1p><t*XS7OJ3d6$uqJK)wbi5<rr*Gi0j#I#&uLy*ra
zBo=_HD<w7-3&*ocqIB1OwZ!%y>T4wSBT{Cq#OQ|DCW-xwDBL5l`N)8KCAJXm`y|#M
z*|1q+ER!O$25$Wd7rfqez{+J*3G-rbwX$uA2R?Yco6xus3ccRVz!G~?FbT7@ptd?-
zmoUy{5_<x2wGzvf-0k3=#Z-H}JAnD2Z<)mQOMN@hHV0$(dI=ki#js3bdL(JtdB(FS
z<#UX9xomu@3(XS=)<exoiM@o#tddw?m|HEeYN+vg>mfG*ZObH9j;!>0ccbkVV9N+&
z<~i^|n1UtJ{($%dy13Yi(Q6_F5i+qP`iTKErS}$-5IZiO#5&SMTwAPr7QD<)o5sZw
zlpZcJ(L)n=Le3=Kf~QvTv`%$#A$+ilseP$beMN)jVl#xinmB=s_L_tr-Mv<^6L!6Z
zxQm<*)$Mj3yD&7kAeN&)7w<!(CX8NGcRql;N&JlH2$6vnv*6KGgLXr?Rh-0FBE$oj
z`$%!0gDTWQj5}JiL)P2G1JKq&yn^o-(HfyP#B{9ASkWG~;>0Daf_QNf+ysw!AL<gt
zeHcWNSPh|;VmrQ*#br33BK`^ATM2A4aZYc=kh=79IX-r+3w{>5FiQv+(vQd<{XnL&
z^Az50lGPooR`6Nt17}(5q4-Kj2icP@L0dlq@-+{NgVu{S)vdn-eHe(=o93i-cO<R}
z8nj~Cm9+UCi%NT;5Z3^03yX0v1d%j-$wBrGjB5R^$2V(x5RA&J7=wchx-CB8D#p+t
z<Dv%~oR`CNO$~C!^}&_fRg76dMj66}E3>d3D}#)6U?5ImjQK&v{=YEp2r@4B#rYrM
z3hS~o$k~i>UTtJUka6iRjQfHNs=`<IcsR(o@E6ARAY)2@^zd9|eV63e(H7>?ZrRAv
z=`K1_471+_L5p~rHpT5|!%A}+@ifgTbA*1P$;YmPthR^ppxvDiY64r^^CDzgKMhi5
z%)Wjpu&+|)6`3;Mf+thvEtxX^1u0YJb(t~)VDdG}m^Wm`%m*nmX1~mstsrH_yh$08
zAv2~A&nrV_&^8tS!bWu<7z7X9gTFdw-Vbu<#{874x_lI5oB`wNlsO+{ln=T#Wqt}W
ziU$Yhru~(Kjpjj)*8|qoN%MP<^O9mT_hG8f1#l>7nmIyo&SR)F%4SZ6;_L*6vZI;P
zG05?>T|DGkRu|Rj%wIU&gB*MIRjP`Ett>P217be*80w?epSPWWH4oFQy|yG;uGE1c
z-HPG4!YNmr>hf#4j8=>z*D@w4yIJ(?Awf`P{uf!JP34qI*>pqo4U{L)LqX>RE7Nqz
z%>6;-ibtElDO+$SRb^Tgr&McOIsA$n$<p&#%8l*UGUh7A1u$gvwI#tG3lzfy29**F
zHOP2hG4Rv_4<W)iOB9D5f?UOTMKS1+$W@Ft6oVd+AVAGV-cbyCfN~XMSCC<szIsAF
z9SpXztkAEx`Pfc44QhvFygKmmK|yLvb0|NRES44e88#o=4W}CIt5A<0kfos3!YdX0
zW2#5!m*sq{=Ube9v~Og4HvP7kUIhR>o@Vd?(35*eItBZW>=!{_#`y<)PXXvpK;MS@
zW1z{c+&@A8Efe&&d<FQqaV9)JA}7vB{kfT-KS>9jq0x0^?#;OW5G*eaO-?#Jswt)*
z>Pt3rIqR2H6zR#$)tt+U^Ab36cCYkdnp)hWaf9G0ZIOy|0i57+^n?sWD^|sg!Ftr}
zLY(5zgPi26)Rid?J=eLKQ>i%gVCZV+#wiXx0!zUDGi<EGgDhsDjk&Wo_8|AmM+5Q_
z*~@H$5aSkf?_S=sIS5LhWTT~Jn?iUszTUt-#h%RbzQZhK3wsK8#>eA+Bslg~oH>hW
zaxjzj*4*T@bOML=pY~L4bymZslxxGIo#n_insIwuZa9BHMo1!!Cpe$QK1GVzd9w3q
zY^5?t%)wKg=`iFbB8%Idco{j^Cy!@1OJP+iaPn;D9)#mXMA7czdCvTJoPT5|H+MVJ
zu-iz4WqTnnaOPlsz9!;&Ug&I%d#BQB4}Qj30o{`5$<I4o(TeEBFF2pfRzxws=o}In
zcprYr`8+(8efsjtt~8v(r9b^R9>Ti*jT4$A2XGU2wM2eOs+3!~YYtp5MvHwAkLIrE
zR*dx{>IQCb*JWh;c%p{$1nwGv$V;k%Cv(@U@I+Fhcq(_DM$qPvWF@zA*Nt$@N7Oi;
z!9A`#jBN*z<9RlB^}%>vA!-uO<F2U~suZ2V-Q2YR;rNJn(|7@Ql|k}XqGs?y?&^Ut
z$*HL3Mcma9j!J4CFXpb&{%Y{^c?oy@iiwuI8eYm>o~7{n`VLTY8!zLoaftfoMBTx+
za2I|U6XY%CTe<5^Y%-~q*q3pvXT07Xq-y!MFpnxAc`Nu??&=R`z9uaz`FZXtcH(|H
zs(^hJ_iC;&kbIS>HT;n7no19Q<iy;?OHD4^S_`VVo0pkftB}Og(AmD8mz!J_smkw-
zyu#%AH-dPeBY5}lN|S3kq@?+K`8bp7x6ow!_ym(H8ji>by^l{ZxxPR@N!`z@Os=#J
z$UnO0Z{NaanOtMwx6I84cs0x;Y)8n%gS^J%x(AL*>LI?_<Qj(ZCf(l3cbi<L2=_;n
ztAFD!nOwUNnL}<+5A!1?mk+D#XB_rz{FDh#NnwosZiVCK7V-h4=Xsn4^aXOsC&Gk2
z(Ut>|j=y5j>C<gpfLn_36_2%%xiQwAxyHB*)-p6@u4TrreS;on-eofSVkZ66ez(<d
zK$XPTMH`c0E&|?VuE*`Sbr2{+L;ExGq2+gU|1YD+wiV4WdyuBlnRghAkRh`3o%o#v
z5?SJlOhz%X@m(^o7<Y6J1NjieBlA|<=RkFOGd(dG1FN*S30fT^EzVp-n*!><jcsQN
ze3Hayi-|=LhQfyUTbZpD+_SXD*YAml)E}`G_G8ACN^=~y!;$MU+$T&1eq$BH8?DAq
zA^cRdp<(jmBz$Wa79^RJKkGK$LBWyuxdI~#dgSb%FEpwVg_Jh1Z~v~yco##LjQ<oH
z?_$p)@$XBFY=m8Q{-M-p0j0A2w=(15P^J03oJEj;tkG7cpT!^&Fx_dZ_5Av@D&6@Z
z%wJ4H!wemdRFP6N@U&ZXtMdprc^*5cIeN5nWF}5YL{#eu&Y!VBBr#7<a?;LScABpz
zJ5QjKBo^qY&SNkviQ9C$^DGFO=Cs@O4ClufgCy?IOPsf3q*82=KE;`axsk+Ty~^1k
z8RM7K5`C7li<+RcrFyk97K=}EJbI0@O^ER73!VRkbCOf5FLq9b+mcwWd!2q%h(R=l
zmHHZI6@0OzgIJ~4;c6bu0$S4g^L%SsAMOm85qUe#e`$SjV&eUkni7shvde~FhGAW#
zb?2cx!Fh{W`a;P#7}S@Tdm^(enm!6GA7k#)Zqhp?r;X8_71#mYMlOs+xR)W3za(ND
zLa5gQGbe!>q30*34bhzgd*S^1F7a=Ga3%beBN>XhX`w1XS~;fXD+E){#xUJ*p2Gx4
zVz?fMRe;_$Ot-$#{4?TjvFfMMl8>xOtJE>jk-9ShX(RQHf{`wv=#SPh&iHhU{}USM
zWIaDRZM^P$&Y^@SK=>VSWY3AZ$vFlUMG}*AEEqc1+Xf-JakSNrr`=jS74>+^MeGNz
z;xJpyRdoDXkntPvg+ByD8EvE5Y1?wO5HXmIidmQqTK>%T#?_5vnAtwNy74qfW;>5>
zODv}07lh6JH{0baLiTpjTjZbgIrvq8S{)pMr33h{_r@+}r_BvCW+5UsA$yt89vU7)
zL-ulJ&|cMph-I%RG!kNP=0f4mURi8Bh^eFsnZ2sSpdW3VqV_eV#@$Gcui;kqUFAk9
z<biuw_T3dmHI(D|70cdIX*`0?6930IraucyMh_IQyA3zNLPxD3Q`Z5rj^ze((#3K|
zB32kCrx$(u6S2~;IxRRU-9*GHBiY#kL=_RMjZ`NJv7AfC8pD(4oD?dOYYn&4p;nsX
zE~6lLw)mnmdPN#~cl6G~;2nup`RMEIY&<6G5iuOiviP95)4L4<US@T*(0S$+vR7)E
z4=?~3>8NgAOeny2%Z?s&!DBJ{C7|UYeBosymfbssKzVkNjP?OEXZK*npI8RtGl2JW
z8xJBIWh9Hsn0^=n-y&BX|A}!EbURMPT-j<mnqrs}$<9WgtK*v(Q*$Uz$5@@7)6hzJ
z?Kl&Y>?~Hx!|`oQs&l%^c*ofoyE9G|2*<gY4ClpApYt)<&QD-nD)=rYkI5*#gBHiJ
z7=0!zng#;@BgRcI)$vn|GZ_;hUAYLqzUz$qJ4BBC49ETvnuuTE*p-R+H745G2H}u4
zF2xwmF_;8N{1%ho9EHU%iQi+AnNF`OPr?`++-f-u{8vOHtH1se&|8rwISaV$5^(nn
zOh;bM3hs1!FyFVd2Wus&U=#8p8@ZaZ3fuE8B{;!mfmn@g_i?n+J(ip`*mmEKER&qI
z*mf5qFp_f@w%xg?H5*95dThIwqf#CwVgt{{t3WWaEE4Wi+3p0|xdn#wlF0Q8GHym0
z><mM>gPAcN5<%Q#e1kA<ruH(cu^pBDOTvdl8*Q=MA@jL67)CF|qOTqJ&;+9bBcv;r
z-121O<`6zC)wmV<n@GOGZafRV#7DY~o)*Y^sKcmY!-+UbrK3xXJfyHxG`7_E8O5EJ
za_&uKMjH%O;y0HYBN0K0aPIgDV|DLf2y!P?8t-DjQfA6HV>8-Iu}X5MPB1djSK`yA
z7?-i4r2gquhNlw@SCCNEEaOhM!e>+)BMOo2)IPf=Hahnf;}Iy6oo1pSppV37nT%Xa
zlk9&h-sgK3VUk4kd1DMboJk7iUMRR5igkFFJFiX@d;mle^S6rvPbngpK&+Y_qM#>6
zE{O#@ML|9)mn3eh7X^b5EIWzaz8jB_3lUCBUwq9&%H}v@2qfoZ7)#(JEz6wt%$SI<
zOFYwLbjN8=;#pRsZwSwgHXJ>W|B}(cFk&&U63<IumTgd80GnCUZQFsy(0lgLxmm{d
zm=8Hm+057ne`FYPOvWq?Z%sikHy39oszWx)Y8(CRy34Az@b&_*t(fc_yu6ju#&`;m
zYLDo6a@sOuDKfPPL{6H?s8fqD$8I$iAZ#?5IqA_%&xgQSq-6VfX1R6sKro|^Y+eVn
zeUeG1&F$n!;OUy&==Q`Mwx1sHcc_;oGLl8mPcsxAW5<|03v;_Q&u4dLWFZQvIT%Qh
z$=HE#QmAu#Sd9<SQQ|%A##{`R)?99{LZdB~oJ_>xBEyATkV)3NxH&KSlo+%U(@AIF
zQe!gGLI$m*%xLGttxrkxD>oKH={XYWUtuJ`vtJ1xP|0kxUTm45Ecy6~r=%~8ISO~&
zxi0xS-{U0Nkr}Tbyi%LnF!uX%vv_L{O+s$xRO3~ITY6StH>$8Uzo9N&GK_kRP$ukk
z*+v&E5!t<K9<w|P0S%_Imc|-ccNljfnTVH#OM-hbof5|-K{q6<#1~s>G(j9MCELhV
zeVqpr@-e!#AEP(l$*?mUJ)BRBC+C9C_-!e&fwGU;+5^9?E3<S49BYBid2r!Y<0ZIS
zg{G|8%xH(8OMH&W=!3;LpW3UfhRuXWS%lAxW^|H7cH=ak)ycLHjh1cDJ_yoTMH2m%
z#?xJY5Ule!au#vhHo&-l;wygtl`op;c$#5m$wQA!j52+wg%<H(RQepJjn<)!=0K+9
zb#P6;#qvG)chTEt*#l$l!t`6S`x`EG7ResKj3r0|gLWLHCT61(h^-Z<;7*ISKJnBR
z-w|y{07TJ7Cv-~*=#{W)e<ileUT^%}t*%a<WyWwUYk8&eoXLnAs4j&(4OU|$rd2X_
zXB%3q!k^DG<{-4P{ROwN6H_Yj7YmHl$U}+0RA{Whv`hS-MMgI)42i#7Y)ng6_@0vH
z>$JV4%tm(-^t1Sy33t+3cue`5(*j`^LCnOQcfc@>E=`!M&YLkGlCYSfonz5S5)mfD
zIS_&DnFp~*Q-X6Q#3W%eRb07tL<E^W3L^Kw<+MywVL4ArG&NswC7C>7*4n^YO~_hX
zSUZF@A$8he?OsInDYDkiRPKBM;gCdo(;-+xv)W;qN5CnQReujnk03T3Ht6{aJKU{1
zCm_gY(b!=f_U$*6;N3%{Nr&|w9UlII_Iok14tMJLMu!^RnTKR@6Mq4O(~z<><_@=E
zlb?=kmBj7126+o!NMfOmY$j|uY3ZvEKwtV1Rfn~DepQFnx^oxuU<@f-qvNuVB&ENt
zn8!8~&HC;5dIC|m3m#i-|8Mgp^q;Kx5;|aVUb%#3xFPrxDvX?Oj=Of%sHF1ZTEktt
ze_<s`j?T-RKIr`f`t2r;OW_m1q-~r9zHwsx=|7_7cJ$7x;e{Dm-VE-Xg;<e~d3Z(n
z%Kj;DCbm3BF(Z;Q3-;R}iRltH?^fK9%vFKOn+^NVqulq0Xx@D8zWyT5o5P)5v9uOY
zQ#EvsKvBx<2x2aFx6W;F@OGl+aTwK?L23a!$Q#QG(YJy-&!XjX>N^tBH^AL<M2zD5
zoC}fWzYsB+?|0pg3~51nD*1lyvSB5)BI-ttJM_I_KF^M03~qR_2vQ)U;4!OU$oo5e
zu!8hu&0LdYYDy%mJ!}rmOz#9UmoOQ56M6oTyqmc5Cipm>Y~Kurmm;O5TjSyI6+b3$
zB<?vE>W|bOZV4Kfqw`(_F>gB0ugsgwor7?`sV9w7pz+RVrEw}RZq_)BruWLg!WH83
z;os;huRd;qB7Lxa3bYqqdYlhy?rn&o-T9#Aq%>TMIdDFtG3QF;1pU_0xmDxN4>8ZP
zi1?d^dnoC^&LPK~8#MP*$aCRbqB(Ps4pal3OVOErXeo(h=uEFQN@A6!IX_1~N!+FB
z&RP#lOKP2l%k72G+Y`&p>BnC|f%#<TCe3*_a)I8PbE1eiJAx~Tdo`2ux)9;htWG~P
zNzP_1+W9h^lEi(Q;ar7EE{XfK1Y7~Y#!z&$NAvt>yT`(vzr&-Xe6&~*+XrDy5)nxE
znJ6X{4|^oi-GY!wB8o>aTWfT%Wa4W^3EqmnCuS?=q{21J*nkkGVa8pzGGi^;=-lg?
zZ8GkGUWw1K8Vs5;NTw#*W4s8zC9$A|k&U|Cff%<N##6{<*<oR_(FVEvHT-ZbN;N)2
zFw010vE7)2$s9-ck_=-#;BAC2%{KHtc-x<FPoD7%O0U#e>o)2_&f#+WC!|-Tf&6o=
zEHXC3yRWFjnquQ7EY5EUU)$Fhi)AA_uPZS&MJk6jmKg&Oz)d8xshrui!83E$45Wb;
z^9Tx{)iv074BpEylriHwX$itZa3&pwUU4+8;J(6Rn|M`2JZ)X$iH~0c5QnTt(RhhT
zj^!aVc8P(;BFp1IpTH2^<1Nnuy$2)gc%x-6&~=D@$7J&c%)T($4xpvkZah7jCo>p-
z1o<x)p&o{Frt{8tPaToBC-VFfdkgL~FmEH#Xpcdn{EAU6B*H+Vq=2)7h**@u@d(-x
zBI0me=*wj64<h1mUDy>%WE{Bm1fGE#$!PYxiga|$a<~ba9Je@}?O~BhtYap&()tR>
z?1rz78i$*p)iKxMtirTQk$Dc>m`hN^d<Rz0ZpeQ~DmOda1g(yH9L@!hr$y$t7xFIX
zrz+v_k-X;=IvhbtIZkA_37Q<oGMarjj#<?$@E8vQnd3Q!n_#r#X@_$=qFV@t;~D6z
zLvTxosCSs0k$rGyf{17Fim1HYr^h9ZO?HXjLYyap_>xq_-|>oFuR`MkNH5378E%4h
z$A=kC+9T2F#qklGu+ig78$E7fJCLh8aqPzN5{`X14&XS1gMI=T`efgLtiVx#qX<U{
z4*I!b=(BGmuD*xi>j)0|3Eq`YF>39A;Bf?y-q@fA_jJ&MbUNr6Fdg({myV-2=$UQw
zxEGIh<{xnX&Mv%-i4^(&-Gyf*hF%T9Sweo~TOh<ri^Sx}PsULH&DZg^=HRn>|NC8d
zW@hM7GlDHYWC|-wzGXrU!N<fT+t#`x2D8WBHT#XOJSFn#-{lUwhVJYCS6ANtn#Ll3
zppZxUeT6*Z{_A<WYq;{Ky%GL*y74-Hw?aOYcl1y1&Ue|&c<FS(v}sf4xvE%%KfQ?O
zLPuE<U*|tw#0%1+P$6ee?l^7MjL9=Q&YCfMX2*%MW<iwWhZ<7=t$t?@{s52izte+H
zO;*wq7fhKkXMD{a)l=s~1dY;SbjSHMXh#cd%9gerC(ggsIeqHvsq<z`?pQr%{)~lJ
zdWB>>9p~RMzhg)jTA4{hrDDa%>_RRQBCThHd6@ZSp_`YRwY<1m!Sp>IYmu;+^>^9J
z!mJg<<2P#h3!Ykt=>KAaq?G==N6X+sGwUC)TF9VZj9JS_6sc>3<`FRiM62PVP+$1+
zc%cmu#!%79JV>OPOGS)+Cy+HFYqdx$hmk?TY#vMowgwF}v6s!(o#e$so*zY`SwG8a
zMJIEuNUYWGhlts%pMwwjeL?Z_{;|FINY8(l4iXl9IlrRq@>1#UN-nkOe=M~Ynf0IG
zDs=1XJujQ}-xRT$h(8rk3#}N_i~L879xAw5|0h)F?<{>;<eBw#Fwl0ONM0r^W$>+5
zSjeHlA`1Th6tuX(->sOp@thA*_bL15V4oCh<rKC5r2-lngMA(j_JO#ySOzHZiX8}j
z6%^X86dxtUZO!_VyjCO+6nSOA9tq)H4hOsJ@_$>*Ghz=ewbp36Ipf?Efkdbu;BVWT
zxA)MB)c0`82rVP&FDda7*+EJi<jpD35Y+oVS1Iw_Qk4=Paim0Hb4ut@h^oF2DdG`@
zm~qX#QW(RL3JYpQDluE@<L{^yS%jwc6Itby4-a8VY5EcJuq?SRX!E>^5z{v>m09uw
z#;>wuBSerTKf*12Ls0xD?jP5SS9pF|LTPfBb|p=IULw<Eofb@!i%Td?euw*%CaacW
z=Dk{w@Dj075r3c?(&SAIY4QqmB2C^Rd=J_q%=#u6(6FR1;cXB$O`kl7Ms#5Yb(37C
zUm#b^`YwouB@(1Q3cB=+a_K|3Bur*~yE1)riRR{{xk39eIM?A*eK6ShdH=+|yp8qk
zAhpN8sxNPwv~P)Zr&cc~o+<#9bNy}2pWB~zwmu7Q;`I+S|J43G%lf3GKGpo2`}6Gd
zhnHAuXoQXMNdMcCm$gdD9a2H1T5r<)U-jo1#wSz<P(SqN7T22f^O`?)0B_~Fo7_j|
zk93Oc(~E0`)vW)4K_{7O^_8$=m6Rn|16IIcjP<`-Fr!d#tY^%6V6pX-a3Q*St+1C;
zB;Q#)h~m6QA0%306-JO&Sw!~3fWVyKce1jU`ClEtlRU2lTi;NvW__mhRFDs?$=03F
z1x4X{UJmwnC!~kz|6B|?6u^V}kD`UOyU+)ltu?j!?#1|vUt6yPl}=dtVV#Sp$V6y;
z8EH^v?xR1xxEA|+6*W4E>0d#n1!T0nh-o;NPHFl#;94T}D5TVe#kKm6y1&O@-fh}1
zi!k@7LMEgnY+qbttugDD^dIF|%&&$6-HQ=G_Inep$;tW_6w|fbjLE=I4YM9eaT*jX
z`fg0xe-<IeNa@E-wf?UM^E}TBi)e1%Gf|ex&_2IN&douzwACY#5?1t2s@0#Af}b`E
zJ`of=A_W&V3)V})L(PKE1O-1r3+D9cMQ{!QK5Ehmxw(Z*rR|GqwS5#^|AjKtD4er`
zpD30Fgfcip<4&F2n1pCtNyrUKh|UK>fe+DLfl#PJG&cQ={xU>}#wJc~f<iQ^Ba<~U
z)KCV5{>(v$#!`@fk|RWu?jmZGpC~pCuz8mi#U_E?7v?|}=p$kDY|zzX@g+Y|tOoYO
z_IFY24loXpTk;ddmI4-sIkX&f^L{UitpOd{hH2PT_(0RIv9Y7YZX}M?0n%TK34Ws4
z-+|b}=sLPsaECRJKv5W72f8?nCVp8MP5kmOn)u_wXyQ)@qlrH&jIM)yRvp$r0*k|F
z{P9ouALpPM_l9HG;}Qve#R0r>4Sg7N`2PU&`8E8Lpqu|km{=D3EeUw(i|*{jv7i01
z<(%FS3w~k&lCiN1eGDKO*U<QZyv*Bb_)7mP4ZXz9iZL^mAdNS^uKHhWhJg<4f=PY`
z@sTE>|8{2u-Vl?CPp`L<0BVs;blN5p{Q_t<fu@-Lj*yML0VMpt!FdmK_<ytW3Fz?u
z<%a&YQ277r^E>G9|Axn=(bDtEKMeo_ajXqS7XBaqxIp920KE9lFn%ZZj~Kx_`TZmK
z7ytkNqZj}1k^F65>`xiR)AH$0Akl&I7;S^)uqcBm)~Pst!JiF-K}LTHiH>#t8Px3*
zP&$r-1t34vjgCAV)JEO*qk)do{)sp8c>lps+(v(*3I9(3^ZHLfQw05uCOWeH5u-s?
z0Hq_^pARx}0#G`(6!^!0b{9h@j%adCeaKV#jK_gN$WhR`qodmY#At4}PCzpb?*CyV
zkB_?r6bVYdtASMee;LgkVjg9?zilOV(0_M9|D{DXIT7z4SIMIz=x;~SVfW9igi0?k
zP}TkiATJ2*<9{8fdD33|XvX9}TglsrZ}(y9{INHp`Pnz|c%Z=F?M5_rzl4}eU;H&U
zaziwN4*KTb3R*vPiTR(ok+&B&{*IrS2L;cQ;119Uem(~J_Wpq=#`tr`@OHMUD9$cm
hG->d#z5m8BytSyrErq;b%-4-U&lLt|rQ}Kc{{wDN`oRDI
--
2.25.1
|
|
|
I missed APK file, |
|
|
Hi jerry, This is new one, please use it. Thanks, |
|
|
Hi Wooshin, Please download from ALT Server. /release_by_fxn/swan_test_image/20231011_mantis1496/usb_bfx-ua300_V19.540.23_SD.zip Jerry |
|
|
Hi jerry, Please build test image after apply attached library. Libraries are 4. So I need 4 images for each lib. Only SD images Thanks. |
|
|
Hi Wooshin, Please download from ALT Server. /release_by_fxn/swan_test_image/20231020_mantis1496 Jerry |
|
|
Hi Wooshin, Please download from ALT Server. /release_by_fxn/swan_test_image/20231023_mantis1496 Jerry |
|
|
Hello, Jerry, Could you please build a test firmware after applied attached patches? SD only. This firmware should be built under 540 branches. device/synaptics/sequoia 0001-volume_table_change.diff vendor/skb/prebuilts/boot_config 0002-volume_table_change.diff Thank you. Sangmin Choi. 0002-volume_table_change.diff (140 bytes)
diff --git a/version.txt b/version.txt index 80eb37f..edaa042 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -19.540.23 +19.540.923 0001-volume_table_change.diff (759 bytes)
diff --git a/audio_policy_engine_default_stream_volumes.xml b/audio_policy_engine_default_stream_volumes.xml
index f99d683..e304ca2 100755
--- a/audio_policy_engine_default_stream_volumes.xml
+++ b/audio_policy_engine_default_stream_volumes.xml
@@ -131,11 +131,11 @@
<point>20,-4000</point>
<point>60,-1700</point>
<point>100,0</point>-->
- <point>1,-5000</point>
- <point>5,-4806</point>
- <point>9,-4613</point>
- <point>12,-4467</point>
- <point>15,-4322</point>
+ <point>1,-7323</point>
+ <point>5,-6694</point>
+ <point>9,-6065</point>
+ <point>12,-5436</point>
+ <point>15,-4806</point>
<point>18,-4177</point>
<point>21,-4032</point>
<point>25,-3839</point>
|
|
|
Hi Sangmin Choi, Please download the test FW from ALT Server. /release_by_fxn/swan_test_image/20231103_mantis1496/usb_bfx-ua300_V19.540.923_SD.zip Jerry |
|
|
Hi Jerry, Auro test library is changed, so skb did request test image again. In previous version, lib for Auro is change. Please build again using attached lib like below. ==================================================== It should be built using below combination. (540 lasted version + test home ui for auro + new auro lib) |
|
|
Hi Wooshin, Please download test FW from ALT Server. /release_by_fxn/swan_test_image/20231107_mantis1496 Jerry |
|
|
Hello, Jerry, Could you please build a test firmware after applied attached patches? SD only. This firmware should be built under 540 branches. vendor/synaptics/common 135759_c39a9af8.patch Thank you. Sangmin Choi. 135759_c39a9af8.patch (12,451 bytes)
commit c39a9af8cea1642e81d8b3892f59b0e7f3046f0d
Author: Hong Song <Hong.Song@synaptics.com>
Date: Mon Apr 19 14:11:20 2021 +0800
keymaster - MMCEI-9460 - CL#135759 - merged
Change-Id: If3094fc70a7e21bcfa0bf2c08a241633ee4cbe5a
diff --git a/keymaster/4.0/hal/include/syna_cryptokey.h b/keymaster/4.0/hal/include/syna_cryptokey.h
index 1bba939..29f0651 100755
--- a/keymaster/4.0/hal/include/syna_cryptokey.h
+++ b/keymaster/4.0/hal/include/syna_cryptokey.h
@@ -278,6 +278,8 @@ public:
return 0;
}
+
+
protected:
keymaster_error_t CreateKey(keymaster_key_origin_t key_origin,
const keymaster_key_param_set_t* params,
@@ -286,10 +288,12 @@ protected:
keymaster_key_blob_t* key_blob,
keymaster_key_characteristics_t** characteristics);
+
inline const uint8_t* GetKey() const {
return iKey;
}
+
inline int GetKeySizeFromCurve (keymaster_ec_curve_t Curve){
int SzBits = 0;
@@ -345,6 +349,10 @@ protected:
inline keymaster_error_t SetKeySize(size_t key_size_bits) {
keymaster_error_t lRes = SupportedKeySize(key_size_bits);
+
+ LOG_FUNCTION_ENTRY;
+
+
if (lRes == KM_ERROR_OK) {
if(iAlgo == KM_ALGORITHM_TRIPLE_DES) {
/*
@@ -370,6 +378,9 @@ protected:
iKeySize += 1;
}
}
+
+ dbg_log("keysize:%d\n", iKeySize);
+ LOG_FUNCTION_EXIT(lRes);
return lRes;
}
diff --git a/keymaster/4.0/hal/syna_asymcryptokey.cpp b/keymaster/4.0/hal/syna_asymcryptokey.cpp
index acd5f68..f02b925 100755
--- a/keymaster/4.0/hal/syna_asymcryptokey.cpp
+++ b/keymaster/4.0/hal/syna_asymcryptokey.cpp
@@ -347,6 +347,7 @@ keymaster_error_t RsaKey::SetImportKeySize(size_t /*key_size_bits*/)
size_t RsaKey::GetKeyBufferSize() const
{
//N(iKeySize) + PubExpo(4 bytes) + (P, Q, DP, DQ, QInv) of size iKeySize/2 each
+ dbg_log("GetKeyBufferSize for RSA:%d\n", iKeySize + sizeof(uint32_t) + 5 * (iKeySize >> 1));
return (iKeySize + sizeof(uint32_t) + 5 * (iKeySize >> 1));
}
diff --git a/keymaster/4.0/hal/syna_cryptokey.cpp b/keymaster/4.0/hal/syna_cryptokey.cpp
index 7939ee6..f70fa34 100755
--- a/keymaster/4.0/hal/syna_cryptokey.cpp
+++ b/keymaster/4.0/hal/syna_cryptokey.cpp
@@ -142,15 +142,21 @@ keymaster_error_t CryptoKey::CreateKey(keymaster_key_origin_t key_origin,
keymaster_key_characteristics_t** characteristics)
{
keymaster_error_t lRes = KM_ERROR_OK;
+
+ LOG_FUNCTION_ENTRY;
+
lRes = ValidateKeyParam(*params);
if (lRes == KM_ERROR_OK) {
- lRes = SetupKeyBuffer();
+
+ if(key_origin != KM_ORIGIN_SETUP) lRes = SetupKeyBuffer();
+
if (lRes == KM_ERROR_OK) {
if (key_origin == KM_ORIGIN_GENERATED) {
if (lRes == KM_ERROR_OK)
lRes = GenerateSecureKey();
} else if (key_origin == KM_ORIGIN_SETUP) {
/*nothing to do*/
+ dbg_log("KM_ORIGIN_SETUP\n");
} else if (key_origin == KM_ORIGIN_IMPORTED) {
lRes = ImportSecureKey(key_format, key_data);
if (lRes == KM_ERROR_OK) {
@@ -175,6 +181,9 @@ keymaster_error_t CryptoKey::CreateKey(keymaster_key_origin_t key_origin,
if (key_origin == KM_ORIGIN_GENERATED)
lRes = KM_ERROR_INVALID_ARGUMENT;
}
+
+ LOG_FUNCTION_EXIT(lRes);
+
return lRes;
}
@@ -233,6 +242,8 @@ uint32_t CryptoKey::CalcSizeofKeyblob (
uint32_t key_blob_size = KEY_CHKSUM_SIZE+KEY_HANDLE_SIZE+sizeof(keymaster_key_origin_t)+sizeof(params->length);
keymaster_key_param_t *pParam = NULL;
+ LOG_FUNCTION_ENTRY;
+
if(params->length > 0) {
pParam = params->params;
for (index = 0; index < params->length; index++) {
@@ -269,7 +280,10 @@ uint32_t CryptoKey::CalcSizeofKeyblob (
key_blob_size += sizeof(uint32_t); /*iKeySize*/
key_blob_size += sizeof(uint32_t); /*iKeySizeInBits*/
- key_blob_size += iKeySize; /*iKey*/
+ key_blob_size += GetKeyBufferSize(); //iKeySize; /*iKey*/
+
+ LOG_FUNCTION_EXIT(0);
+
return key_blob_size;
}
@@ -288,6 +302,8 @@ keymaster_error_t CryptoKey::StoreParamsToKeyblob (
keymaster_key_param_t *pParam = NULL;
+ LOG_FUNCTION_ENTRY;
+
if(!key_blob || !params) {
return KM_ERROR_INVALID_ARGUMENT;
}
@@ -370,8 +386,9 @@ keymaster_error_t CryptoKey::StoreParamsToKeyblob (
memcpy((void *)(key_blob->key_material+offset), &iKeySizeInBits, sizeof(iKeySizeInBits));
offset += sizeof(iKeySizeInBits);
/*store iKey*/
- memcpy((void *)(key_blob->key_material+offset), iKey, iKeySize);
- offset += iKeySize;
+
+ memcpy((void *)(key_blob->key_material+offset), iKey, GetKeyBufferSize());
+ offset += GetKeyBufferSize();
}
lRes = iImpl->EncryptKeyData((key_blob->key_material_size - (KEY_HANDLE_SIZE + KEY_CHKSUM_SIZE)),
@@ -406,6 +423,7 @@ keymaster_error_t CryptoKey::StoreParamsToKeyblob (
memcpy((void *)(key_blob->key_material), &sum, KEY_CHKSUM_SIZE);
}
+ LOG_FUNCTION_EXIT(lRes);
return lRes;
}
@@ -421,7 +439,11 @@ keymaster_error_t CryptoKey::RetrieveParamsFromKeyblob (
uint32_t offset = 0;
uint32_t index = 0;
- if(!key_blob && !key_origin && !params && !key_format && !key_data) {
+
+ LOG_FUNCTION_ENTRY;
+
+
+ if(!key_blob || !key_origin || !params || !key_format || !key_data) {
return KM_ERROR_INVALID_ARGUMENT;
}
@@ -499,19 +521,31 @@ keymaster_error_t CryptoKey::RetrieveParamsFromKeyblob (
* Let's check if it reach the end of key_blob.
* if not, we should be able to Retrieve iKey/iKeySize/iKeySizeInBits
*/
+
if((offset+8) <= key_blob->key_material_size) {
memcpy(&iKeySize,key_blob->key_material+offset, sizeof(iKeySize));
offset += sizeof(iKeySize);
memcpy(&iKeySizeInBits,key_blob->key_material+offset, sizeof(iKeySizeInBits));
offset += sizeof(iKeySizeInBits);
}
- if((offset+iKeySize) <= key_blob->key_material_size) {
- iKey = (UINT8 *)malloc(iKeySize);
- memcpy(iKey, key_blob->key_material+offset, iKeySize);
- offset += iKeySize;
+
+
+ SetupKeyBuffer();
+ size_t uKeyBufSize = GetKeyBufferSize();
+
+ if((offset+uKeyBufSize) <= key_blob->key_material_size) {
+
+ // iKey = (UINT8 *)malloc(uKeyBufSize);
+ memcpy(iKey, key_blob->key_material+offset, uKeyBufSize);
+ offset += uKeyBufSize;
+ dbg_log("uKeyBufSize:%d\n", uKeyBufSize);
+ }else{
+
+ dbg_log("cannot copy to key in %s, %d, %d, %d, %d\n", __FUNCTION__, offset, iKeySize, uKeyBufSize, key_blob->key_material_size);
}
}
+ LOG_FUNCTION_EXIT(lRes);
return lRes;
}
@@ -560,21 +594,31 @@ keymaster_error_t CryptoKey::SetupKey(
keymaster_key_format_t key_format;
internal_keymaster_blob_t key_data;
+ LOG_FUNCTION_ENTRY;
+
memset(¶ms, 0x0, sizeof(internal_keymaster_key_param_set_t));
memset(&key_data, 0x0, sizeof(internal_keymaster_blob_t));
lRes = RetrieveParamsFromKeyblob((const keymaster_key_blob_t *)key_blob, &key_origin,
¶ms, &key_format, &key_data);
+ dbg_log("key_origin:%d\n", key_origin);
+
//KM_TAG_KEY_SIZE will default to the size of the key provided
- SetImportKeySize(key_data.data_length << 3);
+
if(key_origin == KM_ORIGIN_GENERATED) {
key_origin = (keymaster_key_origin_t)KM_ORIGIN_SETUP;
+ }else if(key_origin == KM_ORIGIN_IMPORTED){
+ SetImportKeySize(key_data.data_length << 3);
}
+
lRes = CreateKey(key_origin, (keymaster_key_param_set_t *)¶ms,
key_format, (keymaster_blob_t *)&key_data, key_blob, characteristics);
+
lRes = RecycleParamsMemory(¶ms, &key_data);
+ LOG_FUNCTION_EXIT(lRes);
+
return lRes;
}
@@ -854,14 +898,14 @@ keymaster_error_t CryptoKey::ValidateKeyParam(const keymaster_key_param_set_t& p
SetKeyActivationTime(params[index].date_time);
break;
case KM_TAG_ORIGINATION_EXPIRE_DATETIME:
- ALOGD("ValidateKeyParam() params[%d].tag = KM_TAG_ORIGINATION_EXPIRE_DATETIME\n", index);
+ ALOGD("ValidateKeyParam() params[%d].tag = KM_TAG_ORIGINATION_EXPIRE_DATETIME, %llu\n", index, params[index].date_time);
SetKeyOriginationExpireTime(params[index].date_time);
break;
case KM_TAG_CREATION_DATETIME:
ALOGD("ValidateKeyParam() params[%d].tag = KM_TAG_CREATION_DATETIME\n", index);
break;
case KM_TAG_USAGE_EXPIRE_DATETIME:
- ALOGD("ValidateKeyParam() params[%d].tag = KM_TAG_USAGE_EXPIRE_DATETIME\n", index);
+ ALOGD("ValidateKeyParam() params[%d].tag = KM_TAG_USAGE_EXPIRE_DATETIME, %llu\n", index, params[index].date_time);
SetKeyUsageExpireTime(params[index].date_time);
break;
case KM_TAG_MIN_SECONDS_BETWEEN_OPS:
@@ -922,9 +966,11 @@ keymaster_error_t CryptoKey::SetupKeyBuffer()
keymaster_error_t lRes = KM_ERROR_UNSUPPORTED_KEY_SIZE;
size_t uKeyBufSize = 0;
//A valid Key-size must be set by now
+ LOG_FUNCTION_ENTRY;
if (iKeySize > 0) {
lRes = KM_ERROR_OK;
if (iKey) {
+ dbg_log("delete key content\n");
delete iKey;
iKey = NULL;
}
@@ -934,6 +980,7 @@ keymaster_error_t CryptoKey::SetupKeyBuffer()
lRes = KM_ERROR_MEMORY_ALLOCATION_FAILED;
}
}
+ LOG_FUNCTION_EXIT(lRes);
return lRes;
}
diff --git a/keymaster/4.0/hal/syna_km_context.cpp b/keymaster/4.0/hal/syna_km_context.cpp
index d8b34d2..b8d4e52 100755
--- a/keymaster/4.0/hal/syna_km_context.cpp
+++ b/keymaster/4.0/hal/syna_km_context.cpp
@@ -763,17 +763,23 @@ keymaster_error_t SynaKMContext::Begin(keymaster_purpose_t purpose,
LOG_FUNCTION_ENTRY
//Find the crypto key that corresponds to key blob
+ LogHex("keyblob:", key->key_material, 16);
+
CryptoKey* pCryptoKey = iKeyList->Find(key);
if (!pCryptoKey) {
+ dbg_log("no key is found, set up key\n");
lRes = SetupKey((keymaster_key_blob_t*)key, &pCharacteristics);
}
pCryptoKey = iKeyList->Find(key);
if (pCryptoKey) {
keymaster_algorithm_t algo = pCryptoKey->GetAlgorithm();
+
CryptoOperation* pOp = CryptoOperation::CreateCryptoOperation(algo, purpose, &lRes);
+ dbg_log("CreateCryptoOperation return lRes = %d\n", lRes);
if (pOp) {
lRes = pOp->Init(pCryptoKey, in_params, out_params, operation_handle);
+ dbg_log("Init return lRes = %d\n", lRes);
if (lRes == KM_ERROR_OK) {
iOperationList->Add(pOp);
} else {
diff --git a/keymaster/4.0/hal/syna_km_util.cpp b/keymaster/4.0/hal/syna_km_util.cpp
index 07ac069..df59239 100755
--- a/keymaster/4.0/hal/syna_km_util.cpp
+++ b/keymaster/4.0/hal/syna_km_util.cpp
@@ -476,8 +476,11 @@ keymaster_error_t IsValidDigest(keymaster_algorithm_t algo, keymaster_digest_t d
//Check whether the given time has lapsed current time
bool VerifyTimeLapsed(uint64_t timestamp, uint32_t timeout)
{
- time_t givenTime = (timestamp + timeout) / 1000;
- return difftime(time(NULL), givenTime) > 0;
+ uint64_t givenTime = (timestamp + (uint64_t) timeout) / 1000;
+ uint64_t cur_time = (uint64_t) time(NULL);
+ dbg_log("timestamp[%llu], timeout:%u\n", timestamp, timeout);
+ dbg_log("giventime[%llu], curtime[%llu]\n", givenTime, cur_time);
+ return (cur_time > givenTime);
}
//HMAC Signature verification
diff --git a/keymaster/4.0/hal/syna_rsaoperation.cpp b/keymaster/4.0/hal/syna_rsaoperation.cpp
index 94e39a2..e83cf94 100755
--- a/keymaster/4.0/hal/syna_rsaoperation.cpp
+++ b/keymaster/4.0/hal/syna_rsaoperation.cpp
@@ -166,7 +166,13 @@ keymaster_error_t RsaOperation::InitOperation(const uint8_t* pKey, size_t uKeySi
{
keymaster_error_t lRes = KM_ERROR_OK;
uint64_t uPubExpo = iKey->GetPubExponent();
+
+ LOG_FUNCTION_ENTRY;
+
lRes = iImpl->InitRsaOperation(iPurpose, iPadding, iDigest, uPubExpo, pKey, uKeySize, &iHandle);
+
+ LOG_FUNCTION_EXIT(lRes);
+
return lRes;
}
|
|
|
Hi Sangmin , Please download test FW from ALT Server. /release_by_fxn/swan_test_image/20231113_mantis1496 Jerry |
|
|
Hi Jerry, Synaptics gave patch like below. https://synacsm.atlassian.net/servicedesk/customer/portal/173/CSMSKBSBLT-228?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0Z3QiOiJhbm9ueW1vdXMtbGluayIsInFzaCI6IjI4MmRiMWZmYWVlMmM0MTY5YzkxYjAxMzY2NDY0ZjlkZDc1NTRiNDNhOWYzODNiNzdjZmYxZTNkOWFlNDdmM2MiLCJpc3MiOiJzZXJ2aWNlZGVzay1qd3QtdG9rZW4taXNzdWVyIiwiY29udGV4dCI6eyJ1c2VyIjoiMTEyNzAiLCJpc3N1ZSI6IkNTTVNLQlNCTFQtMjI4In0sImV4cCI6MTcwMTgxNjY0NiwiaWF0IjoxNjk5Mzk3NDQ2fQ.w70XGjQispD8Y-POJfEi-Bpkw_1X8XaBTWrSG4f6w9I Please build test image using below combination. I will compare zapping speed. ( 540.22 + patch ) Thanks. |
|
|
Hi Wooshin, I can not download the patch from syna jira. Please help to download it. And please help to check the patch that i copy from syna jira. Jerry CSMSKBSBLT-228.patch (846 bytes)
diff --git a/amp_wrapper.c b/amp_wrapper.c
index 6c3ee82..e58d591 100644
--- a/amp_wrapper.c
+++ b/amp_wrapper.c
@@ -1336,6 +1336,13 @@ void amp_start_pipeline(AVP_HANDLE *player) {
amp_log(socPlayerInfo->pip ? 1:0, "amp_start_pipeline 9 in, AVP_START");
AMP_RPC(ret, AMP_DMX_SetState, socPlayerInfo->amp_dmx, AMP_EXECUTING);
assert(ret == SUCCESS);
+
+ AMP_RPC(ret, AMP_CLK_SetAVSyncOption, socPlayerInfo->amp_clk, 0, AMP_CLK_OPT_SYNC_SHOW_FIRST, TRUE, 0, 0);
+ assert(ret == SUCCESS);
+
+ AMP_RPC(ret, AMP_CLK_SetAVSyncOption, socPlayerInfo->amp_clk, 0, AMP_CLK_OPT_SYNC_DYNAMIC_SYNC, TRUE, 0, 0);
+ assert(ret == SUCCESS);
+
/*
if(socPlayerInfo->avOffset.delay_time_ms == 0) {
AMP_RPC(ret, AMP_CLK_SetAVSyncOption, socPlayerInfo->amp_clk, 0, AMP_CLK_OPT_SYNC_SHOW_FIRST, TRUE, 0, 0); |
|
|
Hi Mr. Jerry Lin, Why don't you contact Synaptics directly ? If you ask Jiamin Mao, PM, then they will help you. We are same situation with you. Please check it and let us know the result. Best Regards, SuhYoung YOON |
|
|
Hi Jerry, Don't you get patch from synaptic yet. ? or below is built image using that patch. thanks. |
|
|
Hi Wooshin, Please download test FW from ALT Server. /release_by_fxn/swan_test_image/20231114_mantis1496 Sorry ! I forgot to update message in mantis. Jerry |
|
|
Hello, Jerry, Could you please build a test firmware using below manifest xml files? SD only. BFX-UA300_19.540.22_test_BPM-18714.xml Thank you. Sangmin Choi. BFX-UA300_19.540.22_test_BPM-18714.xml (157,215 bytes)
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote fetch="." name="skb"/>
<remote fetch="ssh://git@bitbucket.skbroadband.com:7999/stbbcf" name="skb_bcf"/>
<remote fetch="ssh://git@bitbucket.skbroadband.com:7999/btv-ux" name="skb_btv-res"/>
<remote fetch="ssh://git@bitbucket.skbroadband.com:7999/stbpac" name="skb_prebuilts"/>
<remote fetch="ssh://git@bitbucket.skbroadband.com:7999/btfaml" name="soc-aml"/>
<remote fetch="ssh://git@bitbucket.skbroadband.com:7999/soc-syna" name="soc-syna"/>
<remote fetch="ssh://git@bitbucket.skbroadband.com:7999/soc-syna" name="sptek-syna"/>
<default remote="skb" revision="BFX-UA300_5.4.0" sync-j="4"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="anypoint_adv" path="vendor/skb/prebuilts/anypoint_adv" remote="skb_prebuilts" revision="b0b55baac2c311df1e135f6f419750b1fa6e0382" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="release/common" groups="skb_prebuilts" name="apple_tvplus" path="vendor/skb/prebuilts/apple_tvplus" remote="skb_prebuilts" revision="cb04dd7f75f450011d60822d1f63eccb1ae71828" sync-c="true" sync-tags="false" upstream="release/common"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="boot_config" path="vendor/skb/prebuilts/boot_config" remote="skb_prebuilts" revision="10563c927efad59016451a61ab18d0fd652052c0" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="boot_script" path="vendor/skb/prebuilts/boot_script" remote="skb_prebuilts" revision="8c8943d6b5225cc9e3938f7d299c7ae832aa3588" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="bootanimation" path="vendor/skb/prebuilts/bootanimation" remote="skb_prebuilts" revision="8db40dd449eb9b226ae3332ae5751a198548598e" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BTF_API_LEVEL_7" groups="skb_btf,testauto" name="btf-prebuilts" path="vendor/skb/framework/btf" remote="skb_bcf" revision="c5d700eb9bd3c72a3189f2be7daf0e5b0a650b4b" upstream="BTF_API_LEVEL_7"/>
<project dest-branch="BTF_API_LEVEL_7/bg5ct/android-10" groups="skb_btf" name="btf-sepolicy" path="vendor/skb/framework/btf-sepolicy" remote="soc-syna" revision="5ce780b8a323de0a70c95f04c1b5353bab7e7e60" upstream="BTF_API_LEVEL_7/bg5ct/android-10"/>
<project dest-branch="BTF_API_LEVEL_7/bg5ct" groups="foxconn" name="btv-hal-impl_bfx-ua300" path="vendor/synaptics/btv-hal-impl/bfx-ua300" remote="soc-syna" revision="d1de063bd387ef4cab24f19c982b008d65f47404" upstream="BTF_API_LEVEL_7/bg5ct"/>
<project dest-branch="BTF_API_LEVEL_7/bg5ct/ua300" groups="synaptics" name="btv-hal-impl_synaptics" path="vendor/synaptics/btv-hal-impl/synaptics" remote="soc-syna" revision="ebf2ecc8e9395ba02713f6c6728670c24619ee6f" upstream="BTF_API_LEVEL_7/bg5ct/ua300"/>
<project dest-branch="AI2MAX-5.4.0" groups="skb_btv-res" name="btv-stb-images-AI2MAX" path="vendor/skb/prebuilts/skb_btv-menu_image" remote="skb_btv-res" revision="6d36779d00a2d6640c73d2207f50d476921df4cf" sync-c="true" sync-tags="false" upstream="AI2MAX-5.4.0"/>
<project dest-branch="KIDS-GUIDE_5.4.0" groups="skb_btv-res" name="btv-stb-kids_guide" path="vendor/skb/prebuilts/skb_btv-kids_guide" remote="skb_btv-res" revision="9ecc90a4fbbb10a186fdd10b226d7dffd560e7ad" sync-c="true" sync-tags="false" upstream="KIDS-GUIDE_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-device-synaptics-sequoia" path="device/synaptics/sequoia" revision="1509600c53d3daec9b7420e0af0035b78c721e9e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-device-synaptics-sequoia-kernel" path="device/synaptics/sequoia-kernel" revision="da723f5fab2e9ea6613933f9762f31d545b674a7" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-vendor-imagination" path="vendor/imagination" revision="af2fae1b0295d874f9180b422d6c5643561c1d5a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-vendor-marvell" path="vendor/marvell" revision="b4c58be93ab7a21cde3032f7c7ca2d197247eba7" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-vendor-synaptics-build" path="vendor/synaptics/build" revision="b675af8a4981a16d14f0494069d5e9efd88c02b6" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-vendor-synaptics-common" path="vendor/synaptics/common" revision="9efce808bce9bfb55eaee51369752864f1f0c80c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-vendor-synaptics-external" path="vendor/synaptics/external" revision="af5ec221befb13beee3a28af88c28a8c12e62577" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-vendor-synaptics-overlays" path="vendor/synaptics/overlays" revision="8cc855831612b9a8264a6ea7dafe28c67c429afb" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-vendor-synaptics-playready" path="vendor/synaptics/playready" revision="50966be7751f604a4132add1c78bbccb73a0bc51" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-vendor-synaptics-sequoia" path="vendor/synaptics/sequoia" revision="1f8a321a7d8d627eb91052ca82f88e0de77c62ae" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-vendor-synaptics-sequoia-gtvs" path="vendor/synaptics/sequoia/gtvs" revision="d8dee560ed672cec7a0a8d93b7d987847285e72a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-vendor-synaptics-vsxxx" path="vendor/synaptics/vsxxx" revision="af0b915f5e53aeae061b3589ceab7fe3c38a49d2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-android-vendor-synaptics-widevine" path="vendor/synaptics/widevine" revision="cddf1ce2860f99cd3643479f36dda926236be774" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release" path="syna-release" revision="9660154eda97b598d5d8cd972f127afc2eb72951" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ampsdk" path="syna-release/ampsdk" revision="a19767a78c021ab04bf6d0e1a0b12a7e1650c449" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ampsdk-amp-src-ddl-acodec-codec-codec_mpeg" path="syna-release/ampsdk/amp/src/ddl/acodec/codec/codec_mpeg" revision="afa64c4b81f2b7887106dc1439bd8132ce38d96b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ampsdk-amp-src-ddl-acodec-codec-codec_wma" path="syna-release/ampsdk/amp/src/ddl/acodec/codec/codec_wma" revision="88e6b7342e415040f5ea5e48ba7db71fcd0409b0" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ampsdk-amp-src-ddl-acodec-codec-dts_parser" path="syna-release/ampsdk/amp/src/ddl/acodec/codec/dts_parser" revision="281cf8a3df7d715e964c3c6fa1b6ac09e755d134" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ampsdk-amp-src-ddl-comp_dvs" path="syna-release/ampsdk/amp/src/ddl/comp_dvs" revision="48b674b378fb7bc5238f1f83016ef4af3a43693f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ampsdk-drm-widevine" path="syna-release/ampsdk/drm/widevine" revision="f164fcefa5109f1f89b4c094cd280151fe4a9f28" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-application" path="syna-release/application" revision="af0ee0ee5b7328b95482c8e0045f17595fe0f355" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-boot" path="syna-release/boot" revision="c7cf2476258615764e5be0a26557e826775f76f2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-boot-preboot-prebuilts" path="syna-release/boot/preboot/prebuilts" revision="b8beb6248b731a48fed5d39ca7e4248ae9744158" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-build" path="syna-release/build" revision="7487c1cdbb479e04ae86d5597d801c198d1cbd8b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-configs" path="syna-release/configs" revision="0a97ca2eb2d2b9ce9b9ac3a131e667b48853cc09" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-drm" path="syna-release/drm" revision="6f514665aca4e933cccd2087ddafbce7b46001e8" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-drm-pr_syna_ca" path="syna-release/drm/pr_syna_ca" revision="0a404aabe99a9adac0aad3673445b378b049db77" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-drm-pr_syna_ca-3x" path="syna-release/drm/pr_syna_ca/3x" revision="c1cc4d1fb82ec412135b966c5247af5d044e7f52" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-drm-pr_syna_ca-4x" path="syna-release/drm/pr_syna_ca/4x" revision="755ddad3bb76f7c39d0d50029327b45b2de13c01" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-external" path="syna-release/external" revision="0f26d29735e8ac99b1dd07c98dcab42a5b2b13fb" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-factory" path="syna-release/factory" revision="cd43b6122314219e9b2b092dcfe48a549d67206e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-fw_enc" path="syna-release/fw_enc" revision="aae380e2fb4bb54cbfcd0ca09c46a6f0fb89a50b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-fw_enc-dts_hd" path="syna-release/fw_enc/dts_hd" revision="7268f03dd5cee719a916b2cb7094889611af64fe" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-fw_enc-mp3" path="syna-release/fw_enc/mp3" revision="e51a25bf955306c72f397c2029fc6a1d0f7ed427" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-fw_enc-ms11" path="syna-release/fw_enc/ms11" revision="62ca440675056fc868906615043dd995a783debb" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-fw_enc-neural" path="syna-release/fw_enc/neural" revision="9509e3f7ba80df3f24d92f2401adec5fe698e2f7" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-fw_enc-srs" path="syna-release/fw_enc/srs" revision="b80050379229541eb6c9e26144e6ed5b3efdbdf9" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-linux_4_9_q" path="syna-release/linux_4_9_q" revision="d010ba1c3c6fce5a3c5c1d84a3e80fe9c9e59338" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-osal" path="syna-release/osal" revision="11fb01d6cf01a70becf0a622f647a8a0a2d3da73" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-security" path="syna-release/security" revision="2a52ca4fedf2f31c921bd1d24308490136b5560c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-sysroot-android" path="syna-release/sysroot/android" revision="ce624e34d150f55e8e63ef08a8d237c1231483a4" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-sysroot-linux-gtb" path="syna-release/sysroot/linux-gtb" revision="893f0c01ee25538c176f29eda65ad9d0cd80bd6a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-sysroot-linux-rootfs" path="syna-release/sysroot/linux-rootfs" revision="b382699d5efabd721cb2113d86f4698cbaa73e09" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-sysroot-linux-yocto" path="syna-release/sysroot/linux-yocto" revision="d902f6a579510fa49f0c56b9b57402acf7fe64f0" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-sysroot-linux-yocto-72" path="syna-release/sysroot/linux-yocto-72" revision="0294cfe7aa91b32c8e99def976d353464a1b6973" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ta_app" path="syna-release/ta_app" revision="101b32099379dc46bd4995897af56fd51336be8c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ta_enc" path="syna-release/ta_enc" revision="d9ab0518c6ddfb2787a3f6f67b1b2dae66d50957" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ta_enc-dv" path="syna-release/ta_enc/dv" revision="e5b1502b17fc44b0c083de22e810e2c033330e36" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ta_enc-libdtscore.ta" path="syna-release/ta_enc/libdtscore.ta" revision="9bb0ca3d0ddfe5dadb15ea0e41c74f514bf9427f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ta_enc-libdtshd.ta" path="syna-release/ta_enc/libdtshd.ta" revision="107d84be469c00761a35b3dd6593c2873cc1d108" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ta_enc-libsrstruvol.ta" path="syna-release/ta_enc/libsrstruvol.ta" revision="defd453def303fa8ef02042b200cead23c83d5e8" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ta_enc-libutctl.ta" path="syna-release/ta_enc/libutctl.ta" revision="61daf9a39de63af6c515aa9404bde217ddd585fd" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ta_enc-libwatermark.ta" path="syna-release/ta_enc/libwatermark.ta" revision="51c4669bcc14bff0318347b6689adbc508749c16" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ta_enc-libwma.ta" path="syna-release/ta_enc/libwma.ta" revision="9ba6329897ba54dfd52f1c0e2ac57a9bc0e9484c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ta_enc-pr40" path="syna-release/ta_enc/pr40" revision="f6c65ee24fe0ae04f55f10c5402373516cbed4e5" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-ta_enc-wv15" path="syna-release/ta_enc/wv15" revision="7e2ce3d9774424102f608dfecdd35bd7fd91c874" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-tee" path="syna-release/tee" revision="a3a6117347ae11a72bab84cd3fbdd5e77bc9c383" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="syna" name="debu-syna-release-toolchain" path="syna-release/toolchain" revision="abe9606da7cf381048ca0b3005cc81129065f163" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-common" path="device/common" revision="9d2a0d0c3aab8b698669bad9810bc52ac7f76dfb" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-generic-arm64" path="device/generic/arm64" revision="b2aea8576e3928e9add8b616740e56c1c5a811d2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-generic-armv7-a-neon" path="device/generic/armv7-a-neon" revision="4f543eb2e85a4b140d829ba5e186c895923f67fc" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-generic-car" path="device/generic/car" revision="f75a4ff4e6ae7d26049d12d35855102a9cad3dad" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-generic-common" path="device/generic/common" revision="fa38a0a6fa43fdf34b81d37c3acd7dc6ecbd1230" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-generic-goldfish" path="device/generic/goldfish" revision="de1c3f0f8b2d26225da6edcf628c958952c58c06" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-generic-goldfish-opengl" path="device/generic/goldfish-opengl" revision="c643dd7253df3731b927f5e35daaa9bf98393b43" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-generic-lionhead" path="device/generic/lionhead" revision="2632d2f2e3565494e2ee3668e93195dc7bba6128" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-generic-mini-emulator-arm64" path="device/generic/mini-emulator-arm64" revision="672958caf7187fb355149546d886bf5f556ba3e6" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-generic-mini-emulator-armv7-a-neon" path="device/generic/mini-emulator-armv7-a-neon" revision="8c906010786b63d1549ea76e0dba2e0c0abc399b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-generic-mini-emulator-x86" path="device/generic/mini-emulator-x86" revision="dc0e1610a68c17e4aaf3a2b06bf18062e8e5e4d0" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-generic-mini-emulator-x86_64" path="device/generic/mini-emulator-x86_64" revision="0e0dc9eefb1226163a215ac3bac16dedf15d88f9" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-generic-opengl-transport" path="device/generic/opengl-transport" revision="b2e1e50337c4290e0e75c9aa7ba76eda7edf4e6d" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-generic-qemu" path="device/generic/qemu" revision="698158b4e699ee4fc6395c200c0105b154d101ca" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-generic-trusty" path="device/generic/trusty" revision="620ea38a0a891db036d0104e9425b1489ed51a61" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-generic-uml" path="device/generic/uml" revision="6574b28ad7b947395c5770b9fdfc384904b305b8" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-generic-x86" path="device/generic/x86" revision="7a73a1f8e9fd691cb8f45aa9de303f3c39c3837a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-generic-x86_64" path="device/generic/x86_64" revision="506952733fdebb5a2ef086b519ceebe86a95ae31" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-google-atv" path="device/google/atv" revision="857b2f6163066a5f2d5a68814d1c1ead70b56b99" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-google-contexthub" path="device/google/contexthub" revision="86028528d62951e8b323d0aba55a6e85563253a0" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-google-cuttlefish" path="device/google/cuttlefish" revision="bbd7feea9acc14a88ef6c5349ef0470c7cdc122c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-google-cuttlefish_common" path="device/google/cuttlefish_common" revision="903ddd5aa56ce72ec774d2c361752546b652457b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-google-cuttlefish_kernel" path="device/google/cuttlefish_kernel" revision="d0d9709c5a19f5fd6cdfbec6aa4c100d5fd6e9e3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-google-cuttlefish_vmm" path="device/google/cuttlefish_vmm" revision="7bea9f0d8c30ca81cbf217fb25605de195b16631" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-google-vrservices" path="device/google/vrservices" revision="c4155c007bd2c32fc6ee70f9212ad800836cef3d" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-linaro-hikey" path="device/linaro/hikey" revision="b27f1e3bac64f7c0ad7717185e9197e8d20f6b49" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-linaro-hikey-kernel" path="device/linaro/hikey-kernel" revision="aa2b4dd4f0abfb5771798050154d38ec6b14f21d" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-sample" path="device/sample" revision="d64a03ec745d8e4085ae65a868f1e8d66b2d9c4c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-ti-beagle-x15" path="device/ti/beagle_x15" revision="084da5b58a1e6b9e5c9c77783eee412c1ecdfe1e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="device-ti-beagle-x15-kernel" path="device/ti/beagle_x15-kernel" revision="e6da95f21f0586fea0770a2e7146b37a25a3b317" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts,testauto" name="digicap_btv-app" path="vendor/skb/prebuilts/digicap_btv-app" remote="skb_prebuilts" revision="4f9f1e6515436679d5290c9b1f6bb86d94c34be8" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="digicap_google-ad-ui" path="vendor/skb/prebuilts/digicap_google-ad-ui" remote="skb_prebuilts" revision="34a1bdad37ce24081bf8d3378af475290d6b2ee3" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="digicap_patch-ui" path="vendor/skb/prebuilts/digicap_patch-ui" remote="skb_prebuilts" revision="7b55e1bb3bec37d13644294ffd3fa62b1dade146" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="digicap_screensaver" path="vendor/skb/prebuilts/digicap_screensaver" remote="skb_prebuilts" revision="cb6e2c0f7be63d50e2428e742f244d6456cbcae5" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="digicap_zemkids" path="vendor/skb/prebuilts/digicap_zemkids" remote="skb_prebuilts" revision="e71cd17144e9469d163d6cc6da3f0e54bc4c6b0a" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BTF_API_LEVEL_7" groups="skb_btf" name="hal-interface" path="vendor/skb/framework/hal/interface" remote="skb_bcf" revision="78f52afd94a6c2f30156613b9156f6d290dea381" upstream="BTF_API_LEVEL_7"/>
<project dest-branch="BTF_API_LEVEL_7" groups="skb_btf" name="hal-testsuite" path="vendor/skb/framework/hal/testsuite" remote="skb_bcf" revision="f2fb57ca3d76ddefdebb7be662ca89f56c28039c" upstream="BTF_API_LEVEL_7"/>
<project dest-branch="BFX-UA300_5.4.0" name="kernel-configs" path="kernel/configs" revision="de0acd55a148e1f637ada24b9ec5a71f5b7877c1" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="kernel-tests" path="kernel/tests" revision="eb91f7a42c2bcafba2d72cc4fc35a5ed18f12c4f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="pixtree_ads" path="vendor/skb/prebuilts/pixtree_ads" remote="skb_prebuilts" revision="45df61e4f11206ecd9efb34e35195bf014d2704e" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="pixtree_mlr" path="vendor/skb/prebuilts/pixtree_mlr" remote="skb_prebuilts" revision="8431ae8a19b36bf237cc846b8ea9ff5c528e65fe" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="pixtree_multiview" path="vendor/skb/prebuilts/pixtree_multiview" remote="skb_prebuilts" revision="b95d0072469d96ce4de487e020650aefc05396c4" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-art" path="art" revision="a3da03f27531d5455f462e61860c1ba70f16cf9f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-bionic" path="bionic" revision="06cec80ecf95eecfe86cc797382c6cca50d4bb56" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-bootable-recovery" path="bootable/recovery" revision="11f86f1521003c4976a8e444a24c7ec30192a71b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-build" path="build/make" revision="18278aad0e321cffb0d86e9eee505907a6f2d4ce" upstream="BFX-UA300_5.4.0">
<copyfile dest="Makefile" src="core/root.mk"/>
<linkfile dest="build/CleanSpec.mk" src="CleanSpec.mk"/>
<linkfile dest="build/buildspec.mk.default" src="buildspec.mk.default"/>
<linkfile dest="build/core" src="core"/>
<linkfile dest="build/envsetup.sh" src="envsetup.sh"/>
<linkfile dest="build/target" src="target"/>
<linkfile dest="build/tools" src="tools"/>
</project>
<project dest-branch="BFX-UA300_5.4.0" name="platform-build-blueprint" path="build/blueprint" revision="12bcfa5e9b104e2fceaf6a5207af0f718b01d96a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-build-kati" path="build/kati" revision="7295712444f9e66fd0f52a298c1c39ccb0194ad4" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-build-soong" path="build/soong" revision="3faec0d31b06e7ab69adc70e856ae8ce22dc2e2f" upstream="BFX-UA300_5.4.0">
<linkfile dest="Android.bp" src="root.bp"/>
<linkfile dest="bootstrap.bash" src="bootstrap.bash"/>
</project>
<project dest-branch="BFX-UA300_5.4.0" name="platform-compatibility-cdd" path="compatibility/cdd" revision="ea4ae2be066b0d4456d8e244191e336720ec2ad6" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-cts" path="cts" revision="26858e4353f9c22a65545402af055913beddcdc9" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-dalvik" path="dalvik" revision="9a1d3ec50905d5dabbd1ce393e5715df43cc3d1e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-developers-build" path="developers/build" revision="6e74514dfd0489fa1917f0bd11a012897a1b34f3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-development" path="development" revision="98f649d3eafc4c5c9c5bccc6cf7500d345405ed3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-aac" path="external/aac" revision="49735b01e00c4223f8ee1b958ba2ed8b2eb1d851" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-adeb" path="external/adeb" revision="2acddb3f946f381d4bfd5764e2a8e8263cce37fa" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-adhd" path="external/adhd" revision="068d7ff1228db05a89b69066f37816d76275fdf3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-android-clat" path="external/android-clat" revision="1ccc24ce260cf949ddb0bc6994c49723ac2ecf7b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-androidplot" path="external/androidplot" revision="b999712946d5141812fa2456e652db6b818d439e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-ant-glob" path="external/ant-glob" revision="45461635647e5481fa67473795782ce232e44fe1" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-antlr" path="external/antlr" revision="f207c52043d762d9cfbfd87986b5194c855a318a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-apache-commons-bcel" path="external/apache-commons-bcel" revision="50e755197cd5de9d584414616d6d48877c92c649" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-apache-commons-compress" path="external/apache-commons-compress" revision="5334065cacdd3d1af2688d4617918ec0460708e1" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-apache-commons-math" path="external/apache-commons-math" revision="f30081520947ace21933c4f6ade062152c9b99f3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-apache-harmony" path="external/apache-harmony" revision="b115c18dcfcc7433d89826f86a1f5889d3a6e37f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-apache-http" path="external/apache-http" revision="952e3cf27f86ef4e797ba76d0ee108aae3d132fe" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-apache-xml" path="external/apache-xml" revision="2e0b59453e964e77dc2a6e4e1ea13baf03f690e9" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-archive-patcher" path="external/archive-patcher" revision="efcfb5be6f5eb4ae6b6cc755f997df055bc7b9ae" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-arm-optimized-routines" path="external/arm-optimized-routines" revision="0cb9739fdecbc11df2456807d8de81517b957a29" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-autotest" path="external/autotest" revision="b2010fc2ff94af33259503aa28daa6eb70ff4f2d" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-avb" path="external/avb" revision="119251268c594d115a1eff31b3ec32108b88b593" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-bcc" path="external/bcc" revision="db83b156a85bf531c967adb00e649d55d7238dc7" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-blktrace" path="external/blktrace" revision="9c82183ae7fb7dc4db787b8796c652a732b4d552" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-boringssl" path="external/boringssl" revision="98697a9a252a4146c61fbb86169b698d71da165d" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-bouncycastle" path="external/bouncycastle" revision="0f3518b026db034e671ce404372db92de5d55cfd" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-brotli" path="external/brotli" revision="e1fc10a642a91c85afb8cba684b75421c53c2288" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-bsdiff" path="external/bsdiff" revision="79d0acf62e249d4d3b38cd41e5b47bdee336145a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-bzip2" path="external/bzip2" revision="1b9ad0911e00ef427383a47c908c1eba642e2728" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-caliper" path="external/caliper" revision="fed431afe2537c1d6c4930d58fe71ff0ca084c0b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-capstone" path="external/capstone" revision="f1f1cbc054db7021d4167a96b55783e087e1b7b4" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-catch2" path="external/catch2" revision="bcfbb791d09e390fb545c03ca002e570f764d960" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-cblas" path="external/cblas" revision="61ee00692011385347a5dd1ad872556899a5cf7a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-chromium-libpac" path="external/chromium-libpac" revision="2dadcc1c644dd0659e70ff4a318bc6074f06df78" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-chromium-trace" path="external/chromium-trace" revision="f4e722b911fcc6f7164026432de62a02ea3460fb" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-chromium-webview" path="external/chromium-webview" revision="5e34b35a24985062386376b8a85cd2576fe6067e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-clang" path="external/clang" revision="8343f599c9e1dda8e6c1bb779af323a673a052f9" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-cldr" path="external/cldr" revision="1a85e3902da68636ec8ae978935ef144b7ac0840" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-cmockery" path="external/cmockery" revision="9199c7bfafefea32d1884182fa655b6e4578c1c4" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-cn-cbor" path="external/cn-cbor" revision="d42fc3b49cda5c21aee74f0ec7bd06e1bcab8731" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-compiler-rt" path="external/compiler-rt" revision="570d57488d3e0dd5652b8482d63a1fdbe77d37cd" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-conscrypt" path="external/conscrypt" revision="292a0b54b8d32c092734f401c44bcc26b6bed9ac" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-crcalc" path="external/crcalc" revision="e4b2d03505a4f1b6ea42ba026fb05e996de6256b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-cros-system_api" path="external/cros/system_api" revision="38114471918da3af3eee5b26c4e1d7d93517af5b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-curl" path="external/curl" revision="c16c4b9bb9c38c8dbd9d5592ff9514a0b7a96283" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-dagger2" path="external/dagger2" revision="c4e59f861da9bac6beba095dad61a2443998c9dc" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-deqp" path="external/deqp" revision="9a91222da681fa09e277897cb335e7ab269742d8" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-deqp-deps-glslang" path="external/deqp-deps/glslang" revision="91b452070b219d80a82d98deb46c1514dc67f4b8" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-deqp-deps-spirv-headers" path="external/deqp-deps/SPIRV-Headers" revision="33de1aef825029c0cf7927a72df63ebe79745c6f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-deqp-deps-spirv-tools" path="external/deqp-deps/SPIRV-Tools" revision="2e6244127648ea760172bf07ecf687a59ee7bd17" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-desugar" path="external/desugar" revision="67a575a8a97e134bd90b9d3b7570816668fbf4b1" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-dexmaker" path="external/dexmaker" revision="eb1081adb59449e3d280cad576f80ae226b027aa" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-dlmalloc" path="external/dlmalloc" revision="3a9d0af27a9f8fe533931a9e7ca843fd8e5b54f1" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-dng_sdk" path="external/dng_sdk" revision="c285687bc4085efe72e6c09485f8b93dcee738a4" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-dnsmasq" path="external/dnsmasq" revision="8e9578cd0779d081a1a56f575bc631a11a426a41" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-doclava" path="external/doclava" revision="60c1a9f10eab6a82d53ef4db65525b5bfe12de62" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-dokka" path="external/dokka" revision="68f88bd53a3ca988de051469b6b5bc6f383d83a3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-drm_hwcomposer" path="external/drm_hwcomposer" revision="482ad9a71e6667bc291a7900bf174a92cfab775d" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-droiddriver" path="external/droiddriver" revision="b0838843e019a232f9a439f895a658f58a369bd0" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-drrickorang" path="external/drrickorang" revision="8f0f838b123a0e6cd05b1db06f20d1e50d8389c8" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-dtc" path="external/dtc" revision="246e8dd4bccca02440541f0235a9386e00e108c8" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-dynamic_depth" path="external/dynamic_depth" revision="ba6dbda80afea23fcb1e996dcf0dfb7b39283144" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-e2fsprogs" path="external/e2fsprogs" revision="47e3eb9aeacca10d8f77dea2ac8c6e7aee36c338" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-easymock" path="external/easymock" revision="afd503b419c6c25d6804e137f2642217f10ee980" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-eigen" path="external/eigen" revision="cf47824652b817dd4f12e81e4e0ba33225e46777" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-elfutils" path="external/elfutils" revision="76a46f02a97f7d0d8ee334e1fbdb981757a7f50c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-emma" path="external/emma" revision="c2aa4d22fc24295761a9c588836531a7b3d3d519" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-epid-sdk" path="external/epid-sdk" revision="7d6a6b63582f241b4ae4248bab416277ed659968" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-error_prone" path="external/error_prone" revision="293052176003db358872bc7391b0522b7a90b6d1" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-expat" path="external/expat" revision="fb854442b09893b3e5b16906992ace3e3d94cccd" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-f2fs-tools" path="external/f2fs-tools" revision="6225390356ca09449da9d65d0306b1f43099fa62" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-fdlibm" path="external/fdlibm" revision="3eea558350ee7509b210f3bfa91bb9f318121e31" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-fec" path="external/fec" revision="7049b92008752b4f939425ad91bf2aea86133216" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-flac" path="external/flac" revision="5751895771522cda77630a59274c33cffcc2f476" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-flatbuffers" path="external/flatbuffers" revision="24a2547fa55ca4aeb243021ba8ce72099b9b4c6b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-fonttools" path="external/fonttools" revision="3573c3e336f800513596dce38d86abf12ddb25df" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-freetype" path="external/freetype" revision="3d18aea62aad363102c7e6520fec0c0d2b15794f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-fsck_msdos" path="external/fsck_msdos" revision="909cef0d8e47dcedd5a88bc2b66fb242e3e772cb" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-fsverity-utils" path="external/fsverity-utils" revision="9851db065823f9fbb109fb4990323cd468da940c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-gemmlowp" path="external/gemmlowp" revision="18d2e95977453f4c06f999efe21301f5844fafa9" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-gflags" path="external/gflags" revision="0ff6b6b12c67175a1573050e2ded5f7951b989ea" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-giflib" path="external/giflib" revision="341c85ed68d932afcdd4481d361d9c1e65b453e2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-glide" path="external/glide" revision="bd0082947a4c7b0058049c155d3c2517d462cc81" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-golang-protobuf" path="external/golang-protobuf" revision="f41fad3594ed04ed21267e8b9070098a092ffcf3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-benchmark" path="external/google-benchmark" revision="91c277079ad177b9ce43a45e8848560d9c8570cd" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-breakpad" path="external/google-breakpad" revision="05728773737deb58a10cdbe29750152c13e400bf" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-fonts-arbutus-slab" path="external/google-fonts/arbutus-slab" revision="6a62a3a7283256e86faac4b4830e224f64946838" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-fonts-arvo" path="external/google-fonts/arvo" revision="bca8c9b2d370ba24ac0280d674b063f647a038bd" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-fonts-carrois-gothic-sc" path="external/google-fonts/carrois-gothic-sc" revision="344f772c902ad9f1097f74ee86540e13e6a0a047" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-fonts-coming-soon" path="external/google-fonts/coming-soon" revision="6528b7c529714c6982f547844c2c6ae7330be425" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-fonts-cutive-mono" path="external/google-fonts/cutive-mono" revision="32d5199d69463d2bec5d744ce76e38d756d8edeb" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-fonts-dancing-script" path="external/google-fonts/dancing-script" revision="23b7015fb197f99ab9833b4dd29ada3886fede6d" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-fonts-lato" path="external/google-fonts/lato" revision="139c627f77933688eeda9c16a575c1421af08808" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-fonts-rubik" path="external/google-fonts/rubik" revision="4a650db6c054b9b328eb1364d217a82296143d25" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-fonts-source-sans-pro" path="external/google-fonts/source-sans-pro" revision="ea1024073315464fc4ce2c5c0fccaf2ace8e18ac" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-fonts-zilla-slab" path="external/google-fonts/zilla-slab" revision="11c07b19edec7867860296950b14cf7b687240bd" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-fruit" path="external/google-fruit" revision="002c22e5f2dc9030d0b414a4fce547d9e30e0644" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-google-styleguide" path="external/google-styleguide" revision="749f7ae008c0d2dd9767fdfe202e6873e864a956" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-googletest" path="external/googletest" revision="c871e1df34e148591dcb7a45684cfaa561d09771" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-gptfdisk" path="external/gptfdisk" revision="43858e637cab22aa51e4e5c5ce4fea6dca72fb39" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-grpc-grpc" path="external/grpc-grpc" revision="e0b52d97439eeb05d8ae81cfb9ff5599d35c2ac9" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-grpc-grpc-java" path="external/grpc-grpc-java" revision="9b4f1a6db99b7cb7d46320e25e32317853b500dc" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-guava" path="external/guava" revision="6501bf9c8011e09d21905a4cf263d6f5625d1465" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-guice" path="external/guice" revision="0cb6b120e56be5ac654ef6bc0a9bf1d71905193f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-hamcrest" path="external/hamcrest" revision="3d96516e09640e606da166e1dff54fb65c9a3a35" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-harfbuzz_ng" path="external/harfbuzz_ng" revision="5c6da22b1751b83076979c8d16f48054a7c58b19" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-honggfuzz" path="external/honggfuzz" revision="b7bc4c1a1a355ba5f92bd70520eb2af461324a14" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-hyphenation-patterns" path="external/hyphenation-patterns" revision="e5b0bea19621cc2467eca1d7ccbaf2b69f667862" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-icu" path="external/icu" revision="b46524157b29229c3a363f36b338523f4cbd66d4" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-image_io" path="external/image_io" revision="135f7c04ae98ce694efcfc6d9a0d2bc38f4c3653" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-imagemagick" path="external/ImageMagick" revision="99ea11c1088f282342625d806885715ce0c8414e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-ims" path="external/ims" revision="fe28bba97c0754b1fa057a55609ec86c7ccb1d24" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-iperf3" path="external/iperf3" revision="43306ae1c85a53d3efeb20bff0e11cb7377df2c0" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-iproute2" path="external/iproute2" revision="305dbada90d693b92f060b535941cceb38803fe1" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-ipsec-tools" path="external/ipsec-tools" revision="21841d18260f3247c0189c5157169c862632f0ec" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-iptables" path="external/iptables" revision="6938ab6bbf9d67c78f4221a866624ea3a8fdd38e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-iputils" path="external/iputils" revision="2c7b625904073fc96ab12e78a4ee6901c266f1d5" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-iw" path="external/iw" revision="4b78b765daf510d829d5f84f70ec059a82fad312" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-jacoco" path="external/jacoco" revision="93068ff728a7916816e7bbf832b05c717a106c26" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-jarjar" path="external/jarjar" revision="86f27246919d505829a3ccb4f021fe05d182edc1" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-javaparser" path="external/javaparser" revision="070ce799991ca3fb534c78ea92bc3d901baf992e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-javapoet" path="external/javapoet" revision="5110124a043357890d3e39b8452b0f0d4f2434d5" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-javasqlite" path="external/javasqlite" revision="c093f72b18ff45bd66c8884ef667399aa5891b9f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-jcommander" path="external/jcommander" revision="c4d97985b3787276d6b391510250246c9ca94541" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-jdiff" path="external/jdiff" revision="833bb881bfdaa26f1148cc670c1bc374237a9126" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-jemalloc" path="external/jemalloc" revision="e3ff6769f8262841c98245e21b96dc67536759dc" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-jemalloc_new" path="external/jemalloc_new" revision="c10a6b7597eee4f1fa0319d1d7444efe7ef1d8a6" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-jline" path="external/jline" revision="478835d3c4603b43c28feb80912ff33f2c6811a6" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-jsilver" path="external/jsilver" revision="241cd1b197ee8e520aa6b04f277c3b29a2ff0fe4" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-jsmn" path="external/jsmn" revision="0ffcf7ec931258475f9585b808f45f1b388bfb80" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-jsoncpp" path="external/jsoncpp" revision="ef504fb429de168304bd227f421848adc0d8f325" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-jsr305" path="external/jsr305" revision="7b129a25432c1a1a3d1919499d8e2f583c753b8d" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-jsr330" path="external/jsr330" revision="4221d13d2c4079d3299c1d3265ed93564b84c78b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-junit" path="external/junit" revision="b9c79460f7b94f7ec96a899cb60f46e44b78cce4" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-junit-params" path="external/junit-params" revision="ed4bc1eedea9e248f690ed682e4bd1b65863268d" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-kernel-headers" path="external/kernel-headers" revision="05215268d71368ebeab8238a512124cda35491a7" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-kmod" path="external/kmod" revision="a373f23216120dfa63ec6613ec99639880e35505" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-kotlinc" path="external/kotlinc" revision="4f7a87e483094e0819bafc63e9f8ef3a93c26a03" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-ksoap2" path="external/ksoap2" revision="6f08c590bd21f8cf228b71b1423f010cad243b06" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libaom" path="external/libaom" revision="927836483141500bff866cfd6492245318cc0550" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libavc" path="external/libavc" revision="fff822b732ebc20d913ea3cebe8808490b5fc4ba" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libbackup" path="external/libbackup" revision="be853756f8a215492b11ae545206d12b64d3a03c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libbrillo" path="external/libbrillo" revision="d4a88f4821ed402c6515d3cf5442a90c95c529e6" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libcap" path="external/libcap" revision="2db20a0a41de7cf42cc78f4c8a9b0ef2ed47f6b7" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libcap-ng" path="external/libcap-ng" revision="e17ed85e2a3b4691efd6975a02f8e56277cc93af" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libchrome" path="external/libchrome" revision="adc5c3d79d629fdb7e95ba1d05fe5195df11a116" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libcups" path="external/libcups" revision="19ed2a257fd7dfe5cee729712b6abd76e82dd0b3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libcxx" path="external/libcxx" revision="29cbbe6156a5092438597c6b81a9ef55ef8d2949" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libcxxabi" path="external/libcxxabi" revision="a13dc9a5c69d05d8f285b0ab52e7b1ebadf4dc50" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libdaemon" path="external/libdaemon" revision="433dd14cb58a66737e158ad1331c02162a80f43f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libdivsufsort" path="external/libdivsufsort" revision="abb3a16c4986c5f7dda62580c4f53c1930d4d1b9" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libdrm" path="external/libdrm" revision="2493ca265742b83a11531856451849ccf8c27f9f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libese" path="external/libese" revision="6b796cbcd37992280254d8aadc0134ac2e2a12f8" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libevent" path="external/libevent" revision="7b67f806735671bbf49cc4cd74c59c7c105ce8e2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libexif" path="external/libexif" revision="385b3070c1483306fa4c9df74310ec98ad9a4e9c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libffi" path="external/libffi" revision="699c661a0b644dff59fc4731f937b1d60719d5c8" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libgsm" path="external/libgsm" revision="1321c574befc82fd21a8ac38d36e1da1f3ffb336" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libhevc" path="external/libhevc" revision="6de7a93a5bde1a274eb1862aaaf515c1c5c57a7f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libjpeg-turbo" path="external/libjpeg-turbo" revision="94a6b62bcb956bc4bf669945bd11eee9ee1e6551" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libkmsxx" path="external/libkmsxx" revision="7fa58fa14436676f36c62bead0471c2e367d0af0" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libldac" path="external/libldac" revision="93195ee38bd08ea8d9f87cbfa550635923f213de" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libmpeg2" path="external/libmpeg2" revision="89fdf58ed9b7abaa6379ec81a674f150a4a3aa89" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libmtp" path="external/libmtp" revision="cbe00e33b0314fdcf19b967ecbbaf294ed7701b7" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libnetfilter_conntrack" path="external/libnetfilter_conntrack" revision="a44a0c25fa5eb2575df464bd4d9e3e5c7da9ccf6" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libnfnetlink" path="external/libnfnetlink" revision="ac537e1d43625a99d8b266a362f4735762a42b66" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libnl" path="external/libnl" revision="173d924eceaa33fe7f731dfc692dd1e1cace80f3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libogg" path="external/libogg" revision="d03fa44a8b3a0e94ec336c73025914eb515c9265" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libopus" path="external/libopus" revision="fcc38fd8cc63302c151a33819701075cd4cc9f6f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libpcap" path="external/libpcap" revision="1974a6a92997523e1347f939a87ceb7c8339dd90" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libphonenumber" path="external/libphonenumber" revision="085c5ca0523fb92ddbf690e4423b9b6e00d943c4" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libpng" path="external/libpng" revision="5aff8307d1e1b29edb289ba676233df51436dfc6" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libprotobuf-mutator" path="external/libprotobuf-mutator" revision="19b7bf3edcedaea88dff58cc0d0bd595846a9db5" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libtextclassifier" path="external/libtextclassifier" revision="55a7382bc003e2d8cc7c989fa44d15dc3da319a7" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libunwind" path="external/libunwind" revision="689a2af196d2de66803f91dd224e423252d7f171" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libunwind_llvm" path="external/libunwind_llvm" revision="6352e01a22119b918b6bc30e5882b5a6f81cff80" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libusb" path="external/libusb" revision="e486a629e38d567d271f38f50deeccdac6b7fc62" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libusb-compat" path="external/libusb-compat" revision="c9943b468b27de46dc8a039d8e9973f442af0b8b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libutf" path="external/libutf" revision="608c8fc0c45bcfefa6b6e48d5ecff190ed87a96a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libvpx" path="external/libvpx" revision="fff265b1dbc63f28c367f01a920ed7e6166e6eef" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libvterm" path="external/libvterm" revision="2caab416f758b648c4034e9f22cb7b76c37203f0" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libxaac" path="external/libxaac" revision="d098d22eeb073bbc2bd917c4472248b464bb9a91" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libxcam" path="external/libxcam" revision="ecea4993be3fdd0bb18255484158104e7a0268a0" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libxkbcommon" path="external/libxkbcommon" revision="c74616faf095670759d130f9856c3ac3f0f639aa" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libxml2" path="external/libxml2" revision="e040d79711a7aabe472b9be796d57d4ef9006a19" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-libyuv" path="external/libyuv" revision="2db5718acece211b3d42a90e52a2cb49078011a3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-linux-kselftest" path="external/linux-kselftest" revision="9d6eccd1c0bac7c5ac1e61a44e9a649d60be9441" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-llvm" path="external/llvm" revision="9b8d82b598b6242eeec9c35fe696727e9769feac" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-lmfit" path="external/lmfit" revision="3d36ea54c2216475d5e21da31ee0db4af24ebed1" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-ltp" path="external/ltp" revision="644dde483817f788df920f08fe587cd4b1efd92c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-lua" path="external/lua" revision="2574da328caa748be2497afb33bf47fe2f078c55" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-lz4" path="external/lz4" revision="4a2a1bbe1b0f7a75aa7b5decbb84bd7fd7463c98" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-lzma" path="external/lzma" revision="ef4369024dfe3778f0350c23117a352f9e8792ea" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-markdown" path="external/markdown" revision="41a03193095447f4ff110690171574ed8b721292" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-mdnsresponder" path="external/mdnsresponder" revision="ef76ab62ad22ba6c589e47099550dc3da0e803c9" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-mesa3d" path="external/mesa3d" revision="63d88d3b2dde7db2ae0ff382fe5d9fde1358740e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-microsoft-gsl" path="external/Microsoft-GSL" revision="d4e54c121f49d73c9e18aff087ce3dbafc2eab47" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-minigbm" path="external/minigbm" revision="676623b06ff2ccf44f5b859d091e5281235af628" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-minijail" path="external/minijail" revision="47c0fe93a41d0388c1f7a84de850820ec7326674" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-mksh" path="external/mksh" revision="e10ab3670da4b5b7d69f425d7b603cb1195e2f45" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-mockftpserver" path="external/mockftpserver" revision="1f487440520b7264f9134079441bce0adcf05af0" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-mockito" path="external/mockito" revision="48fe6754c6d2c693310aa2c8667c9e232c152c1a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-mockwebserver" path="external/mockwebserver" revision="fd6ec7942c7b35516528cc90cc569cc274b001a6" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-modp_b64" path="external/modp_b64" revision="4b8457442799a0134f80b91d8dc4a888a3526d44" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-mp4parser" path="external/mp4parser" revision="91052b1c78aaf57b0db28a0b1e4f7b91e5d8fda6" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-mtpd" path="external/mtpd" revision="ca7860c5d1284f84e77ad850441b8bb00d1f4625" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-nanohttpd" path="external/nanohttpd" revision="9e6fdd3de9cf7ebc3a16c614147a28e63e62485e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-nanopb-c" path="external/nanopb-c" revision="872074ccde1d0da259e276d38eb052d2cd051408" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-naver-fonts" path="external/naver-fonts" revision="37ba854a88b1721057585111c7a1d7e5fd02b556" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-neon_2_sse" path="external/neon_2_sse" revision="7dff91633c4faf01e78427a0d1626853d96289ab" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-neven" path="external/neven" revision="a1182cb5e3ed263807e0c2233725874819411bce" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-newfs_msdos" path="external/newfs_msdos" revision="6cbd5a634d77914c907cdc00b5bb9fdb1fbc438d" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-nfacct" path="external/nfacct" revision="da41b2d4c2089f96a7fcb81a8b686046e635da7d" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-nist-pkits" path="external/nist-pkits" revision="5b6f1ee982bad06f7ba334df5b0584a59deba7b3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-nist-sip" path="external/nist-sip" revision="d0a7687d3a0fff06ea6c1fe7d11cbff9864beb99" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-noto-fonts" path="external/noto-fonts" revision="cc5b6cd30dd72c6337c94b897f293429881d46e2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-oauth" path="external/oauth" revision="2f79a0fdace446afd17a6b539b391be92214fd47" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-objenesis" path="external/objenesis" revision="a9381064619cdd7671f6e1200c3a7b9ecae3f8de" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-oj-libjdwp" path="external/oj-libjdwp" revision="e5c6f9d3821110df3781a8e9efbdada1305ab6b7" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-okhttp" path="external/okhttp" revision="c74e7275c41141c75c863aeb514453307ef0cfe4" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-one-true-awk" path="external/one-true-awk" revision="c1208415a3a2629b462f1826bc9a25d0bbbdbfdf" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-opencensus-java" path="external/opencensus-java" revision="610a17c2139830070c0dc56540d35aeb64222ec7" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-openssh" path="external/openssh" revision="b89310140157cfdbdc10f1b6583d10777e0f7159" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-owasp-sanitizer" path="external/owasp/sanitizer" revision="9690b9149ee4acb478242eac4c176e09b226e6a6" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-parameter-framework" path="external/parameter-framework" revision="a20e7087eaa8d95ff82f1777f0c21a836608fc57" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-pcre" path="external/pcre" revision="9bfe4731e753c5e605a03889a25564b889648762" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-pdfium" path="external/pdfium" revision="e0719dae86e45f46c78258828851881c90f54261" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-perf_data_converter" path="external/perf_data_converter" revision="f4ff85768cb3cd10d112939c358eee479f09dd00" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-perfetto" path="external/perfetto" revision="c4161c4aa879b8169685efcc6d3775e88ccc0a1b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-piex" path="external/piex" revision="266dae4948aa714201a4fec8cf1e04400a30a65e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-ply" path="external/ply" revision="86d9e5d12a18f1e9ee822944646ee11e5937ea6f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-ppp" path="external/ppp" revision="3ea5ca1afa0c45eb6bddd9a4937bc37f79f3d2cb" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-proguard" path="external/proguard" revision="4049237427905fe053ec217c082ce222f9edc814" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-protobuf" path="external/protobuf" revision="10b0fd4a65a5cb1688336e6d988d20229102c88f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-protobuf-javalite" path="external/protobuf-javalite" revision="8f2ef780c041a8feed10b426eb954c2ff35c119e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-puffin" path="external/puffin" revision="bc7745523aef2d7f620ca16aa6ab11a8e38dc60e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-apitools" path="external/python/apitools" revision="9f2c4cc1426aacb15897099a6af9df82f399c112" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-appdirs" path="external/python/appdirs" revision="f26193e797c3f8f98aaa7e4afd555d2140b3fcb8" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-asn1crypto" path="external/python/asn1crypto" revision="1208f0f8b78755298ebb98a9f4ce5ef76814c708" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-atomicwrites" path="external/python/atomicwrites" revision="be4fa9eb05f3e640647e30454b6f1c2625c34811" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-attrs" path="external/python/attrs" revision="9c3e89fa82d47246ab9b257d202726da133de5b2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-cachetools" path="external/python/cachetools" revision="0377d4b9d25a15e2cc4284730a551a42b7a10d22" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-cffi" path="external/python/cffi" revision="99013222844839c42437f16eace25f4e6a8a8b20" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-cpython2" path="external/python/cpython2" revision="fa37090dcba250d84c5aa7541ad37a598eecdc97" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-cpython3" path="external/python/cpython3" revision="3ef6c80ca3672b9b92dadb3a2e7314adb8fd9d66" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-cryptography" path="external/python/cryptography" revision="d45069b23a8e6d21df64d5b6f2553a7aa7ef9886" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-dateutil" path="external/python/dateutil" revision="d0da7aa65f2f29c46325bfb511aaa98790da47d3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-dill" path="external/python/dill" revision="1de25625afbfa39196b4873a3aa45f09a076a97a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-enum" path="external/python/enum" revision="9e4d9c3502331544e9d02205ab3b8df3e19f1c71" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-enum34" path="external/python/enum34" revision="51c247c15b53879958ccd94a95c403dd2a129da9" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-funcsigs" path="external/python/funcsigs" revision="4f1c377691d5ea3ea7725e35bb106083a5274071" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-future" path="external/python/future" revision="b785374c2b816d432e9936782e2b214b192c73fe" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-futures" path="external/python/futures" revision="89a8fe6ab75db54c27ab073acda54b57b3a1187b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-gapic-google-cloud-pubsub-v1" path="external/python/gapic-google-cloud-pubsub-v1" revision="de91f91b3e0e8cd36ade69e16b831712e8181b5e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-google-api-python-client" path="external/python/google-api-python-client" revision="0d55ba86bf4bfdb1fdf4513e8801405a9fe8ae4c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-google-auth" path="external/python/google-auth" revision="d812ee31b10e88762eac9aeded408702e69280df" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-google-auth-httplib2" path="external/python/google-auth-httplib2" revision="f83658f8b9f7efd85af695bfdac0f00eeacfc5ed" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-google-cloud-core" path="external/python/google-cloud-core" revision="fb31d0b0d90ce27047c575c7cf7bd187d9df36e4" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-google-cloud-pubsub" path="external/python/google-cloud-pubsub" revision="0d91fcf1c53d49055575bfde7c6eb24f345c307b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-google-gax" path="external/python/google-gax" revision="6654a7907460eeed423c35577b1ebdce0b94991e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-googleapis" path="external/python/googleapis" revision="48ac1fcf49fb23895e9eaa1514e3799a4e3cc6a9" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-grpc-google-iam-v1" path="external/python/grpc-google-iam-v1" revision="9bd66e8ca00804a0432ffeddc50d8a552daae05e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-grpcio" path="external/python/grpcio" revision="cac720b2a4a33f52bafbe652639ae1d368be74a2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-httplib2" path="external/python/httplib2" revision="2f4eea998dae784f2c66396a73d525ba3f53bfb0" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-matplotlib" path="external/python/matplotlib" revision="19ad7ac700c9cf081418aa10ea5fa9c66a6b6973" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-mock" path="external/python/mock" revision="3a5218fcb8133b8d17a197b4fcd6c63bd11341d6" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-more-itertools" path="external/python/more-itertools" revision="f408bc183266f6b74c973549c9d0155d44ffda36" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-numpy" path="external/python/numpy" revision="111b7e10af77635c85bbbea1d0d35a649dc45ae1" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-oauth2client" path="external/python/oauth2client" revision="942e7726e2387c58f04cad67ea76bb1cd1378af8" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-olefile" path="external/python/olefile" revision="4b57860bf2c6d6eeb560d84adb20a09e3119d4d5" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-packaging" path="external/python/packaging" revision="b16fb277554ec5eb8e2fb2f9e7fedf95c60355de" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-parse" path="external/python/parse" revision="3e6bd0ef0c68250e04efab06e3d8bac9a723a79a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-pillow" path="external/python/Pillow" revision="90ec1d6e7ee5c236f62e0a374a7065657ed3c15c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-pluggy" path="external/python/pluggy" revision="476c801f6efdea24faab8e234c8802ae3f6cb1dc" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-ply" path="external/python/ply" revision="a06f18c56dfe3148c43ec4ed712bba663923516d" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-proto-google-cloud-pubsub-v1" path="external/python/proto-google-cloud-pubsub-v1" revision="61035093eedea6edd613d98cfc64de2edcc42824" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-protobuf" path="external/python/protobuf" revision="16d0b123e41dc05cb82bd5d7e7194e37ecca5684" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-py" path="external/python/py" revision="bdf459ce1c2c467574869af67ad3c245fea6c031" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-pyasn1" path="external/python/pyasn1" revision="e04e2eb56045b29b920620c9d1f2f50e542aad09" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-pyasn1-modules" path="external/python/pyasn1-modules" revision="60293cd065c65befce9f3ab51a9ee5be4b6adae7" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-pycparser" path="external/python/pycparser" revision="775e41a49bd0233ed94f379fd99b5a5837e257b2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-pyopenssl" path="external/python/pyopenssl" revision="3d7e6f31c43fe50e1147b4cfa49fd365a71295cb" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-pyparsing" path="external/python/pyparsing" revision="bf90b1fc3425729cb5768af5182a83edfeb7ba2b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-pytest" path="external/python/pytest" revision="b3cd64044963b2b0eabaf60b7bd01a47e8395d29" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-requests" path="external/python/requests" revision="11d7236da2593f0908774fd027b175f4ff3e19fa" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-rsa" path="external/python/rsa" revision="ed5cd82fc8cb4f98aafeeaad550860132c27234a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-scipy" path="external/python/scipy" revision="921f53db519df603fe9ff681a49dd18be838febf" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-setuptools" path="external/python/setuptools" revision="513ec3d6bb6f7786d02caf51720497a118b8f4be" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-six" path="external/python/six" revision="1544229cbc0b2936d0eb01b282cd901c8827e0a9" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-python-uritemplates" path="external/python/uritemplates" revision="7fed8f862ab03ae9240a222a45215b4b6930467e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-rapidjson" path="external/rapidjson" revision="908d461a0bb20eafba2a2c4c0f1003d9c9ab188a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-rappor" path="external/rappor" revision="24abc025df68928ce97749b18521c4dbfa3faaf7" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-reactive-extensions-rxcpp" path="external/Reactive-Extensions/RxCpp" revision="fc1046c15d9830f24db7d5b20420a7bf884c1a4a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-replicaisland" path="external/replicaisland" revision="f9d0bb69baae6a0c386e94d8c93372de3d3278c6" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-rmi4utils" path="external/rmi4utils" revision="eab13882ca581b5ef579eeeca311957f5fa2eada" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-robolectric" path="external/robolectric" revision="1c247020a97732c8ed951964a41c727f0d9f16f0" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-robolectric-shadows" path="external/robolectric-shadows" revision="6361005e0e3c3190f479e57b29f7ad52fdbca95b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-roboto-fonts" path="external/roboto-fonts" revision="dd67dd85255323c0e363d84ac3fc5da45981eae3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-rootdev" path="external/rootdev" revision="2b38487945c95283b77047a5470aa750af02f847" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-scapy" path="external/scapy" revision="2c6d26c6fc374a6b26b012ff4523a24e903d8329" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-scrypt" path="external/scrypt" revision="d6114db148b1ededd120de0cf2d1fc73ba1611ac" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-seccomp-tests" path="external/seccomp-tests" revision="2795191f28591534096193bf5a92124367786b88" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-selinux" path="external/selinux" revision="d4c9dbc74e2358126387303d2c8ac3d4cb08b19e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-setupcompat" path="external/setupcompat" revision="c96823b9f70d1a305a1a140121e46ade83256b3a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-setupdesign" path="external/setupdesign" revision="2c496eae34f532f86bfbbe4c2558da06e23db511" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-sfntly" path="external/sfntly" revision="6bef7e4b4133b6ff3c2993a22aba17f3d59da5dc" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-shaderc-spirv-headers" path="external/shaderc/spirv-headers" revision="93474b8b1e381924a3f35c047b911400bbe7d65a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-shflags" path="external/shflags" revision="6d6812d19da2747fdbee25421af1bd3583d75bf0" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-skia" path="external/skia" revision="e32c6a4f32581b03cafb260b7235f1d9b2d952ba" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-sl4a" path="external/sl4a" revision="ac701c2a59f1963c0de480796885f4fe381d376d" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-slf4j" path="external/slf4j" revision="4cd3f35de15e9270f3d5822c3f04a7c2b02189ea" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-smali" path="external/smali" revision="22f98607fe36e57e17485821998a70b5886c0de6" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-snakeyaml" path="external/snakeyaml" revision="5df2ff5ed7c5eebfaff21a8299019e21f648b0f6" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-sonic" path="external/sonic" revision="043398f5c456fc78cd8f5f2057e3a2e767eebfca" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-sonivox" path="external/sonivox" revision="4bfcc221f03d1a00a7a79ff614f90e41ed72a286" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-speex" path="external/speex" revision="fb97af103ba6e0af885a306d1bd014dd9a6f9234" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-spirv-llvm" path="external/spirv-llvm" revision="f32dfe34b9cd7ae79520171b6f6e2f8d855eecb3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-sqlite" path="external/sqlite" revision="98f9a84e93fc0fb31980625387262ebcb452cfb3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-squashfs-tools" path="external/squashfs-tools" revision="26929f59a759b06cb01c539ba45630958a8e3a76" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-strace" path="external/strace" revision="f1cb53780e02e7a9112b4aa53a132cae53a1fa15" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-stressapptest" path="external/stressapptest" revision="4d151d9e70555f617bd5c8859d9b3857be31fde3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-subsampling-scale-image-view" path="external/subsampling-scale-image-view" revision="59fe3cb90269ed94757d37c02c7112fa6e9f78da" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-swiftshader" path="external/swiftshader" revision="308325006f3515492419bfbf12c30976a1b70493" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-syzkaller" path="external/syzkaller" revision="5ea79ae1c00598c57cc8706a4881c93507e6ba0c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-tagsoup" path="external/tagsoup" revision="5e9211080364ad4d30c5b97cf95ce825b740672a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-tcpdump" path="external/tcpdump" revision="f50b8b00f4d40eaaeb7e0e3a398d441d27e63d54" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-tensorflow" path="external/tensorflow" revision="b582373a688a4f93d5a58d66aeffa023d2954154" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-testng" path="external/testng" revision="74aac3e648e789b5f462bd42debc34a16507dbad" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-tinyalsa" path="external/tinyalsa" revision="e84b02b2bfca1b51f743ad262ca0b62504d6c6b3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-tinycompress" path="external/tinycompress" revision="4c77b6dd5f07c87b32a89b67e013fc4825d93685" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-tinyxml" path="external/tinyxml" revision="47a414e46f824c3d3d91c163db8c0e7fcb3dc8c6" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-tinyxml2" path="external/tinyxml2" revision="14b323f3dee3d562b31bc6d0044e7dedbd2201b8" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-toybox" path="external/toybox" revision="1e03c6d85f97833b61c5d7a9e28e835e695e9042" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-tremolo" path="external/tremolo" revision="ecb66da593feea3dca865adfa9ec3763fecbff7d" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-turbine" path="external/turbine" revision="bf6b7ecbccfacab31b6961987f72e8d7e5d668b7" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-u-boot" path="external/u-boot" revision="d90d5a69f9b7dc299bbefb74f4bafb43a1534a36" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-ukey2" path="external/ukey2" revision="cd9c844bd676ff9ff69a74bc49e157149a7f0918" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-unicode" path="external/unicode" revision="2cb210027e5cc5e631d1eb6f2907c4fbd8ba9527" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-v4l2_codec2" path="external/v4l2_codec2" revision="e7a24dbf9c98a7a391fa107725b4cc28b427cb37" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-v8" path="external/v8" revision="b4616666ca983583970b7dd2e30065d19f67a9a2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-vboot_reference" path="external/vboot_reference" revision="df6d6b6e5280520b096fb1f565b758948bc872ee" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-virglrenderer" path="external/virglrenderer" revision="59f85c99c1d1c7db8ca543288e12507a11f7cc20" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-vixl" path="external/vixl" revision="b6f42c3fa351cfd086f3bb6d4e91c6a7b3946dfa" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-vogar" path="external/vogar" revision="830acd878a1be63095bf710fecdd8d22f4f8449b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-volley" path="external/volley" revision="727b980e6d97b7cbbc61b987106315c7b68527f4" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-vulkan-headers" path="external/vulkan-headers" revision="e11ab4647e4eb4d29987011cd2a3e3226fc45e29" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-vulkan-validation-layers" path="external/vulkan-validation-layers" revision="932fa4323a1a4147fc0df55f120dbce86554ab2c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-walt" path="external/walt" revision="a391e66652451cae0fe2ab840892a522c1fe1bbd" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-wayland" path="external/wayland" revision="138d7eae1ca3a0551510476a72990ab32fa8d0bd" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-wayland-protocols" path="external/wayland-protocols" revision="c7f2a3e1857c3fea7808e9c693c920bdbe38c777" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-webp" path="external/webp" revision="0d4066cc8c442d65cfb7c70f9ab484545f813949" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-webrtc" path="external/webrtc" revision="cf0ffc92d1efdaaacf7e2c8045af754463e34813" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-wpa_supplicant_8" path="external/wpa_supplicant_8" revision="8e45b33c8d444fda1bec60d3f9ca13107a0ea017" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-wycheproof" path="external/wycheproof" revision="9fe3e8708733ac26153048a03b1b0f83a206ea51" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-xmp_toolkit" path="external/xmp_toolkit" revision="44d7e4d00ef6da63a75bf3a4f9296872cc4d2ac1" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-xz-embedded" path="external/xz-embedded" revision="51923a98b0af813e3db6a027d64471ee8710a4f2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-xz-java" path="external/xz-java" revision="bd7892bb8927360cd34805bc332039154a2110e0" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-yapf" path="external/yapf" revision="45d923c40605a71867d174abcd04a1db76945651" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-zlib" path="external/zlib" revision="b10cc142496f209148331057a652746a510a67bb" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-zopfli" path="external/zopfli" revision="cf98102ba44eb494f53fc59b3fc59565e4015403" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-external-zxing" path="external/zxing" revision="65193280855e46d11bf5b44f1a7e49ec0c7bd57e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-av" path="frameworks/av" revision="d63579f8e068b263b2b0395e03ba71e690d9b905" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-base" path="frameworks/base" revision="bd9e85266382bd61b569ee0d87d018cd55fb642c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-compile-libbcc" path="frameworks/compile/libbcc" revision="fca09e63fc6a0b8ed94b4f5b23081201220f29b4" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-compile-mclinker" path="frameworks/compile/mclinker" revision="2ac86b5c4b9404666252c40980e645a9e2a73477" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-compile-slang" path="frameworks/compile/slang" revision="da9e9f979be20e805aee2f06a0bd82887d90c85a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-ex" path="frameworks/ex" revision="4bbf496bb9b79ca7ac0a09f004c56a5b40aa2b22" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-hardware-interfaces" path="frameworks/hardware/interfaces" revision="1dd754a602594dace31a6a2045bc8e6f3bdcd1ca" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-layoutlib" path="frameworks/layoutlib" revision="e7178efb3ecd791282f16859885f10c0daeb5a81" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-minikin" path="frameworks/minikin" revision="5ae58a2e5f424c561cdf798163600e8c2453e1d1" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-ml" path="frameworks/ml" revision="c58430ceb02668c2c44a0ec081d216f73e21181d" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-multidex" path="frameworks/multidex" revision="745fa74857d2833e4d2dc3b0d6ab6e6cb6ff25f2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-native" path="frameworks/native" revision="8aec9131c166725eb4791f4f40445dc2b5294386" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-bitmap" path="frameworks/opt/bitmap" revision="e9850af1278e499e427d08dbf40244f3622bd6db" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-calendar" path="frameworks/opt/calendar" revision="1aea8315ebe9cca6e9462ab02e9f4caf20c8cd58" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-car-services" path="frameworks/opt/car/services" revision="91d4b8c2bbc5718637500524c48b6b94fecdaf41" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-car-setupwizard" path="frameworks/opt/car/setupwizard" revision="962a30f834b8e6f060b6bfc1b05d08c972d0b59b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-chips" path="frameworks/opt/chips" revision="81994513f7ca38d4b0c150d3afe71fbd2d2a1859" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-colorpicker" path="frameworks/opt/colorpicker" revision="c5a2e747f97ef2456c6f3dc008ae00f759407a23" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-datetimepicker" path="frameworks/opt/datetimepicker" revision="0cc1bd33ef04e91ed63d36f843a34c2141c319c3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-net-ethernet" path="frameworks/opt/net/ethernet" revision="7282d58109a5ae4bf9e9d7223171af5617ec99e7" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-net-ike" path="frameworks/opt/net/ike" revision="c0736f6c497f1682a654a8bc1d72ff506afea72e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-net-ims" path="frameworks/opt/net/ims" revision="f1c2a9b68a2debdc5f47693876f2b1a7f3d7ee8e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-net-voip" path="frameworks/opt/net/voip" revision="9c0eb14158b923fff523c4e60b103dbcf6bf44ac" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-net-wifi" path="frameworks/opt/net/wifi" revision="075d59cb04b7271d4f892065a940c6dc1e5be4a0" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-photoviewer" path="frameworks/opt/photoviewer" revision="f90e5abc27d5c6694baabfd908ac36ef2dc11f1a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-setupwizard" path="frameworks/opt/setupwizard" revision="13aa8a5c41ab3453c89c9948a9b7e8b1303f12be" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-telephony" path="frameworks/opt/telephony" revision="927e335389c9156cc34ee2b8aa9910ebd4f7e8d2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-timezonepicker" path="frameworks/opt/timezonepicker" revision="4534b444443c8b9d4a19290471ea5b485f05789e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-opt-vcard" path="frameworks/opt/vcard" revision="5e88fd3aaadf7d2a54d1fbb7e03004775801750f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-rs" path="frameworks/rs" revision="9822b047aa4423932fa8dd9ace11cdf16d309d3b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-frameworks-wilhelm" path="frameworks/wilhelm" revision="1ddc48b76a494bb1a346db3ac21ee9a10f4fe24f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-broadcom-libbt" path="hardware/broadcom/libbt" revision="23f3a6e8adb289dfa609903126697ca6c4990120" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-broadcom-wlan" path="hardware/broadcom/wlan" revision="71f18dd0868c4871f01d0bb17f9ba05129d1163b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-google-apf" path="hardware/google/apf" revision="7c5d43915046b2d1af8930ae772c291ea28baac3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-google-av" path="hardware/google/av" revision="2575735843e3d43a6f40e6c99968582ac42ed668" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-google-easel" path="hardware/google/easel" revision="fb72d9d16252ed63d9e1aa3465101ff19ac440a3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-google-interfaces" path="hardware/google/interfaces" revision="c9e0aa4bec53caebdaa8d24abd934edd16db6271" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-interfaces" path="hardware/interfaces" revision="97c7f887477ae16d63a0d8fc2c523825a1ddb214" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-invensense" path="hardware/invensense" revision="a51c32c7d16d32462fcd2d3fc61474bb0ec56864" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-libhardware" path="hardware/libhardware" revision="da60173e142c7bd919d4bd5ad113a2ed9f93e3ba" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-libhardware_legacy" path="hardware/libhardware_legacy" revision="86d26ee18d5de516f1a48046164c9e84408a7cce" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-nxp-nfc" path="hardware/nxp/nfc" revision="947e0ba5d5f49cfd178357cf0808053ce5c45ec6" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-nxp-secure_element" path="hardware/nxp/secure_element" revision="313a6535990bd70a4cfc65d8b2bf8b40372b0920" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-audio" path="hardware/qcom/audio" revision="7c9cdb7c03a2d8d0809263923de60d6086113afe" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-bootctrl" path="hardware/qcom/bootctrl" revision="aaa8a9b93d685990b6c328aec76027bbad305de8" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-bt" path="hardware/qcom/bt" revision="6de1929161c4898b95a8b298bd3c9403fbbf00e2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-camera" path="hardware/qcom/camera" revision="e0642e95ed62f9270098aa548f58b05eb9eb7ae9" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-data-ipacfg-mgr" path="hardware/qcom/data/ipacfg-mgr" revision="644ce1d7415430f775f99cfe2aa0ab3ad4090071" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-display" path="hardware/qcom/display" revision="3ade6ee7aa9b2555307d57f9ac80cf993ca84a58" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-gps" path="hardware/qcom/gps" revision="8525477f971ca33b56225813ad15e760cb3d1381" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-keymaster" path="hardware/qcom/keymaster" revision="ecfe142948adf4f82083d7333b6c778f3993842b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-media" path="hardware/qcom/media" revision="3dbbe8f2863bca8ad38d3a7aa74aec0e62c092f2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-msm8960" path="hardware/qcom/msm8960" revision="c25a431842a26b5756b58a9d4a42c776e0457ba2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-msm8994" path="hardware/qcom/msm8994" revision="8e0383f6f41a2c49461f381c8d066ea21b20c674" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-msm8996" path="hardware/qcom/msm8996" revision="f0e7ce67121940312eaffeda9c4add56d63bf4e1" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-msm8998" path="hardware/qcom/msm8998" revision="47c6b775f99eec47a1be15d7ad36a4d2db4cbadf" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-msm8x26" path="hardware/qcom/msm8x26" revision="85c1a5282ae28663335e55ce96a4c0487de6c578" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-msm8x27" path="hardware/qcom/msm8x27" revision="8ff5c0057cbdecfa09410c1710ba043e191a2862" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-msm8x84" path="hardware/qcom/msm8x84" revision="582b414269d8472d17eef65d8a8965aa8105042f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-power" path="hardware/qcom/power" revision="c9165f0cb184fcaf6888b7921b55033e8b50836c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-qcom-wlan" path="hardware/qcom/wlan" revision="bdf118c219179889f269d784eada3667176f4ec8" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-realtek" path="hardware/realtek" revision="04072136b48d500630ee979f7b3514630fe3a532" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-ril" path="hardware/ril" revision="2cf186902037b85470713ef32d1d138ae8fce7c2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-st-nfc" path="hardware/st/nfc" revision="8efba78c1246d4b2ee5e00baca33d5126682e37b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-st-secure_element" path="hardware/st/secure_element" revision="85f476304d5458ca16c38965e3e5d8492994bdfc" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-hardware-ti-am57x" path="hardware/ti/am57x" revision="90270170724d81013825feeac8f80fd89595388c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-libcore" path="libcore" revision="cd77f25ebb1261cfc3ef0d31d0635a896a130169" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-libnativehelper" path="libnativehelper" revision="bcc2b6fda49e42add4715882231215b2b3ada9d0" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-basicsmsreceiver" path="packages/apps/BasicSmsReceiver" revision="12456bdb267f8837b6ca3bd4439b59820a981930" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-bluetooth" path="packages/apps/Bluetooth" revision="ed34918d8088fb682e5782ebdfb0ea5d9725a524" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-browser2" path="packages/apps/Browser2" revision="37652f79d1a115bc2d920a68ad6846a23107c660" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-calendar" path="packages/apps/Calendar" revision="1938ad4fc2cba17bedfdb7f55760cd8132b27de3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-camera2" path="packages/apps/Camera2" revision="f7232d71b864e700da0c9a476ee03a26a1e50d3c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-dialer" path="packages/apps/Car/Dialer" revision="5a81748b107f070fab44dc593d81aafc805393b5" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-externallibs" path="packages/apps/Car/externallibs" revision="bc16257053938c32c75d502cd990b4fec5a76be8" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-hvac" path="packages/apps/Car/Hvac" revision="68e29d345111c559fd46ac371a50a9ca6469fbde" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-latinime" path="packages/apps/Car/LatinIME" revision="11ce053ccc26b7f16084c8864b1a262490085593" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-launcher" path="packages/apps/Car/Launcher" revision="36c1f0f497682ea40cf9c954f094a5cb0b431d04" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-lenspicker" path="packages/apps/Car/LensPicker" revision="6f7aca1a5191ddbbf647f50d23fb9cd34addc913" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-libs" path="packages/apps/Car/libs" revision="8cc0cd1f258ecb5e731e3c8935616b468047f009" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-linkviewer" path="packages/apps/Car/LinkViewer" revision="a20936c7060b100857f8594a84c15e51da55176a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-localmediaplayer" path="packages/apps/Car/LocalMediaPlayer" revision="650c10e72bc13a845f3c00c56a2b39fa90680965" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-media" path="packages/apps/Car/Media" revision="d520ec1d352dbaacbc503ff61d2dbc52ade178ba" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-messenger" path="packages/apps/Car/Messenger" revision="96d067c203ea1344c4b0d202743908587fb53009" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-notification" path="packages/apps/Car/Notification" revision="86d11e52d3387040ef5ef07215c6dd6a43d62f23" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-overview" path="packages/apps/Car/Overview" revision="645ca82c123da80a1dfd48cff978fe92a73816b3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-radio" path="packages/apps/Car/Radio" revision="83f2221d92175434a75adf1cb0b19517b598eaa2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-settings" path="packages/apps/Car/Settings" revision="5c4ef42dbafc34bea5d0e40533d0a4e56f9c3adb" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-stream" path="packages/apps/Car/Stream" revision="37abfd98677d0dedcc286c61900b3db2da9fe6bc" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-car-systemupdater" path="packages/apps/Car/SystemUpdater" revision="eda0afb194279e86d41087e8f2984fee0655e03c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-carrierconfig" path="packages/apps/CarrierConfig" revision="95074ecc6a05a86848bc8a9d3b8b03b2186ada43" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-cellbroadcastreceiver" path="packages/apps/CellBroadcastReceiver" revision="3646b8b0d83eeb2774baec93c6ee74518f30dc77" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-certinstaller" path="packages/apps/CertInstaller" revision="062594ed9f25d0208a7add7b9fc537adbd051c89" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-contacts" path="packages/apps/Contacts" revision="8a5c8a01e0a50eb8f78a82ddec5100df7ed81c23" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-deskclock" path="packages/apps/DeskClock" revision="f4a34dbb153f3790317e7c5ca61b95d2585e52ba" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-devcamera" path="packages/apps/DevCamera" revision="ac0c3f959d31b22df03ad8fc9c5c35425c3f4dd3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-dialer" path="packages/apps/Dialer" revision="05552cb09dc243995e304dcb86e9b486312953c2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-documentsui" path="packages/apps/DocumentsUI" revision="8e2637f303eca3f1a2da0bf59b208d67a760b986" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-email" path="packages/apps/Email" revision="2f553852c217821d620d19c24511f55f84ce6230" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-emergencyinfo" path="packages/apps/EmergencyInfo" revision="1307cd14006c44cbc7d625b10fc1b91f7ac100af" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-gallery" path="packages/apps/Gallery" revision="93d4b5a37c96052cfc22ecefd2bf1e0ae48d49cc" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-gallery2" path="packages/apps/Gallery2" revision="aa3033352235c276d3df5e9eacad2a5a0c626517" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-htmlviewer" path="packages/apps/HTMLViewer" revision="ba5580e4e1ac8f9f3eb1eb6338e43716ad0a70b1" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-keychain" path="packages/apps/KeyChain" revision="885bc291249cb764c499ad0b5ebd32ce015d74ac" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-launcher3" path="packages/apps/Launcher3" revision="a7d3ec81c553a1d2e58be32b5a6f4807012cd677" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-legacycamera" path="packages/apps/LegacyCamera" revision="f01f73e6d950f8c2cce04cc6f0404a4cb17fa7bd" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-managedprovisioning" path="packages/apps/ManagedProvisioning" revision="3e77d4a07cff7ae760868b63f05d69cde33f6ca3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-messaging" path="packages/apps/Messaging" revision="30ca4742926f8f7e2468ee451b4c71df918b6877" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-music" path="packages/apps/Music" revision="a1f1c511703838aef7656a75ef41022d2d3c5105" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-musicfx" path="packages/apps/MusicFX" revision="161a6f2ae4bdfde1a469bdf5e66db4bbff770671" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-nfc" path="packages/apps/Nfc" revision="85468bf3f51c580955721ce16bef312b5e6a4a69" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-onetimeinitializer" path="packages/apps/OneTimeInitializer" revision="737b0d2daabf33a458ed754e045b2f0e2b65da70" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-packageinstaller" path="packages/apps/PermissionController" revision="61b9cfdf2758ec289d6907d098df4a3277f8114f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-phonecommon" path="packages/apps/PhoneCommon" revision="bb3f2ba6bc3ce1e273394ec5c715fb693b53d344" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-protips" path="packages/apps/Protips" revision="277f2db1a9099d5aaf96d4f3ca8daaeeeeef4e6f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-provision" path="packages/apps/Provision" revision="d3aaf77c58a5886c113f88a99c6aa8f2b7873107" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-quicksearchbox" path="packages/apps/QuickSearchBox" revision="afefb469ba1de266f594827dbd92b8d5c642395e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-safetyregulatoryinfo" path="packages/apps/SafetyRegulatoryInfo" revision="8e051158d0eede62da5e56b3dad30fecb2767821" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-samplelocationattribution" path="packages/apps/SampleLocationAttribution" revision="01809642e1c7214d936c0d35301b355fe6dbfdf0" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-secureelement" path="packages/apps/SecureElement" revision="4bd2e8512223f81bdea1afef1de4ccced39a62fc" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-settings" path="packages/apps/Settings" revision="08d96e2c487d7e8e0bad187344d4363880a821a4" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-settingsintelligence" path="packages/apps/SettingsIntelligence" revision="c725f6eb67081599d68bc915b72604b350b86ad1" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-soundrecorder" path="packages/apps/SoundRecorder" revision="52d1ce17a0c18fe990a80da98c61399363d1ed7c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-spareparts" path="packages/apps/SpareParts" revision="f3d46ceeecd71c5555939f32643c18c78ae7909f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-stk" path="packages/apps/Stk" revision="f76f0524319c40c3639c7a2fdd2c995144876322" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-storagemanager" path="packages/apps/StorageManager" revision="daddd18fda1200dbc769729fde834e90a8bef91b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-tag" path="packages/apps/Tag" revision="40fddd7aa57ca28842d8781c19ba9c08f1de662a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-terminal" path="packages/apps/Terminal" revision="4d4e9490fdd512668ac0d47764f3eeb19504a6d2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-test-connectivity" path="packages/apps/Test/connectivity" revision="0be3e6ffd8451b1bf03ba7a6bdb78e8247c960ba" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-themepicker" path="packages/apps/ThemePicker" revision="322c5298f4d682dfd7c56a44ba79a7b74638322c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-timezonedata" path="packages/apps/TimeZoneData" revision="52bff87fa8f9413d81d8af0d258fa4ea209f84ec" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-timezoneupdater" path="packages/apps/TimeZoneUpdater" revision="106fb74251c2f00cfe07ff3357153cb1d9954ec2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-traceur" path="packages/apps/Traceur" revision="e8009abf2e6c4a8ea4e216649e51ccfd2d9cd306" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-tv" path="packages/apps/TV" revision="28bd9f8c4e624455fbdce86f75820c0d4c9d5fe5" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-tvsettings" path="packages/apps/TvSettings" revision="1c1fa1d354ddb9c3e9ec8c795051eef234ed1285" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-unifiedemail" path="packages/apps/UnifiedEmail" revision="b2161491d87d7a32f18278a4c2b92549d70f8965" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-wallpaperpicker" path="packages/apps/WallpaperPicker" revision="f1e69b45bde30a055d37260012df8e951bebf491" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-apps-wallpaperpicker2" path="packages/apps/WallpaperPicker2" revision="6bcea19e3667832f65e1b8afe4ede8152ea124fd" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-inputmethods-latinime" path="packages/inputmethods/LatinIME" revision="922b0778c9c6363ac9363560ff00bdb0975d18e5" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-modules-captiveportallogin" path="packages/modules/CaptivePortalLogin" revision="fe62b3b494c5203d5447efcf9a3c4ac8b8ee0afd" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-modules-extservices" path="packages/modules/ExtServices" revision="bf7f3d0025fcdcfa9ff557caf21ab8b20dc1fe04" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-modules-modulemetadata" path="packages/modules/ModuleMetadata" revision="bf198f3182e53f3d1dc9d061f558656e59f5d4c8" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-modules-networkpermissionconfig" path="packages/modules/NetworkPermissionConfig" revision="e853abe00d4b6906eee05082659fc958cbed3147" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-modules-networkstack" path="packages/modules/NetworkStack" revision="44647f52ff0cfb7bf220fd4d774430a00e6499aa" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-providers-applicationsprovider" path="packages/providers/ApplicationsProvider" revision="33d26f5eedb3d3011762ce5b2de66e931bf64b35" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-providers-blockednumberprovider" path="packages/providers/BlockedNumberProvider" revision="b573d1c96b0d84210a183dd3c0a1400025ae3b71" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-providers-bookmarkprovider" path="packages/providers/BookmarkProvider" revision="66d866abdf7184af7a98edce18012fc33c41b623" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-providers-calendarprovider" path="packages/providers/CalendarProvider" revision="960c914a6b2fd4138c3e54e8d65a645e4470a276" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-providers-calllogprovider" path="packages/providers/CallLogProvider" revision="5941bd440b92232434f03da497918cea7af43e9e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-providers-contactsprovider" path="packages/providers/ContactsProvider" revision="c6f82a6181b62c07236c54a7dab2dedfbebaf34d" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-providers-downloadprovider" path="packages/providers/DownloadProvider" revision="7536cfa1047a06e451743f7d58ea191ed4408df8" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-providers-mediaprovider" path="packages/providers/MediaProvider" revision="8b044f18a32d45af7395f796fb46f56af0b717a2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-providers-partnerbookmarksprovider" path="packages/providers/PartnerBookmarksProvider" revision="9c3b541b4357011de2047a2e24f92a63c6d8d8a0" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-providers-telephonyprovider" path="packages/providers/TelephonyProvider" revision="c7f822647c68dc50816aed4c91f06939f8a1181e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-providers-tvprovider" path="packages/providers/TvProvider" revision="ae862e59ff8e81a079fa6b4d48cdf618b8fb14d1" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-providers-userdictionaryprovider" path="packages/providers/UserDictionaryProvider" revision="f22d4e72ec78b215e7bcd47c0b2e2861fac9fc9a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-screensavers-basic" path="packages/screensavers/Basic" revision="a5080b83defd7ddf89d5d89d9ab59606dc719823" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-screensavers-phototable" path="packages/screensavers/PhotoTable" revision="ede6dd0afae1b5c7acaa2a1328e9624e157ffb3f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-services-alternativenetworkaccess" path="packages/services/AlternativeNetworkAccess" revision="ddfb1029c3ab1598845f5d6193af211b1edb287d" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-services-builtinprintservice" path="packages/services/BuiltInPrintService" revision="09de2bdbfd73d64dd247b1b4e4ec80c560bdd508" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-services-car" path="packages/services/Car" revision="5da2e50d5ea9e15f5905305b05ed8016bfc62c49" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-services-mms" path="packages/services/Mms" revision="52144996744cb52bfa0985423c61df0fd3a2cb13" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-services-telecomm" path="packages/services/Telecomm" revision="772ed56e10f0ad7740b72a3ad577c96de5994bd1" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-services-telephony" path="packages/services/Telephony" revision="a295a49dee93b77d369d16b6f2d58db2006afd42" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-packages-wallpapers-livepicker" path="packages/wallpapers/LivePicker" revision="d3f1147aee6fd8043abe89694096951a282e962a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-pdk" path="pdk" revision="8112961f0cfa2bef459f5dd3dd77462cd6325d8b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-platform_testing" path="platform_testing" revision="22b70ad143a8b978cf478040cadf934ca7ed7ad3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-abi-dumps-ndk" path="prebuilts/abi-dumps/ndk" revision="a25b65595fb790dc80820d4392393fa539b88cd6" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-abi-dumps-vndk" path="prebuilts/abi-dumps/vndk" revision="7411278a49a8d759dd59cba464f5ebd82296ba2f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-android-emulator" path="prebuilts/android-emulator" revision="e316f9edbcddcf7009d3bf6919830ec2b63854f3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-asuite" path="prebuilts/asuite" revision="4c2eaabe4b1457931ef2d0da508fa10c112c3be2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-build-tools" path="prebuilts/build-tools" revision="a58b1b57d600350c817effa2516ed36adb1bed49" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-bundletool" path="prebuilts/bundletool" revision="94fd4942e5d196d5d2dc47499e5f876c8184c8e0" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-checkcolor" path="prebuilts/checkcolor" revision="c642ef358b291084a614a983081720d0ef59d6e1" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-checkstyle" path="prebuilts/checkstyle" revision="a4e41fdccb2caa571f9aeb791bb0fefc06b9bb0d" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-clang-host-darwin-x86" path="prebuilts/clang/host/darwin-x86" revision="70a45960daf394435ec2fabf34bc701276e522c8" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-clang-host-linux-x86" path="prebuilts/clang/host/linux-x86" revision="7b1289663cd5300689f5825ef0cf9eb05081c83e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-clang-tools" path="prebuilts/clang-tools" revision="24d8778d695bdd756a307b903c4d1993ac132d2b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-devtools" path="prebuilts/devtools" revision="5cb0e278ddc2161db13318950eed2ba2c29956a9" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-fuchsia_sdk" path="prebuilts/fuchsia_sdk" revision="8d3423cbce4c8a9fa631af578fda1ef0c6441abf" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gcc-darwin-x86-aarch64-aarch64-linux-android-4.9" path="prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9" revision="be292e7b7445e3b0f62f89a6b99f04967f5d720e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gcc-darwin-x86-arm-arm-linux-androideabi-4.9" path="prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9" revision="58641e4434ae66df0d8198a3806aed280b5f0823" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gcc-darwin-x86-host-i686-apple-darwin-4.2.1" path="prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1" revision="b38ceb474969ba17032b3c0bf36a841140501889" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gcc-darwin-x86-mips-mips64el-linux-android-4.9" path="prebuilts/gcc/darwin-x86/mips/mips64el-linux-android-4.9" revision="b3a68e192fbbafd3aac96de2148ca00445d7872e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gcc-darwin-x86-x86-x86_64-linux-android-4.9" path="prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9" revision="f0534379f240db72803da273594dac64656b89a2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gcc-linux-x86-aarch64-aarch64-linux-android-4.9" path="prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9" revision="3214a204b8149a18fa1ebca2254e407b299560f1" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gcc-linux-x86-arm-arm-linux-androideabi-4.9" path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" revision="4ce3f20ffa9c2fff30d3465f2801d10420663121" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gcc-linux-x86-host-x86_64-linux-glibc2.17-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8" revision="53ba148ea43a70cceff101830eb44b932e6553d0" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gcc-linux-x86-host-x86_64-w64-mingw32-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8" revision="6af64f0b67db9ba905654b8152823de21ca99154" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gcc-linux-x86-mips-mips64el-linux-android-4.9" path="prebuilts/gcc/linux-x86/mips/mips64el-linux-android-4.9" revision="00e15925600ee0dd5f39e4a34e7870de47c13736" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gcc-linux-x86-x86-x86_64-linux-android-4.9" path="prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" revision="8469ad0c03c97c5cc8f5501f9f331eb746bc4345" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gdb-darwin-x86" path="prebuilts/gdb/darwin-x86" revision="7fa7affd4a3356624187b436c8a3a075421107ab" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gdb-linux-x86" path="prebuilts/gdb/linux-x86" revision="e2ceb27f958afcc0a1c7bd16c92d168f8b7ca939" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-go-darwin-x86" path="prebuilts/go/darwin-x86" revision="812f970cf6645df291664e9f774f88750f731fb8" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-go-linux-x86" path="prebuilts/go/linux-x86" revision="6b05df8c936396ff9466136ccfaf8d61f716cddb" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-gradle-plugin" path="prebuilts/gradle-plugin" revision="f529b20a5af18ac9e05aa41326a82dc6cc875a5e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-jdk-jdk8" path="prebuilts/jdk/jdk8" revision="a4bcf4f04bf988955b2e492b1d85ef2378954323" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-jdk-jdk9" path="prebuilts/jdk/jdk9" revision="dfe701f045b82428c37fcd9e45d429e8d06fbd8f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-manifest-merger" path="prebuilts/manifest-merger" revision="8cf39623e459933125483d0299a41aef7bc0d364" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-maven_repo-android" path="prebuilts/maven_repo/android" revision="511a320455c2357daea28e72d0e81f4535245b21" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-maven_repo-bumptech" path="prebuilts/maven_repo/bumptech" revision="3d54faa0e71a2133e7865833d30a3a035aa7904e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-misc" path="prebuilts/misc" revision="e4d0f22c676e86ff68da9c4f294812da722af2f7" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-ndk" path="prebuilts/ndk" revision="a8e57cd2cd5c69967d71ed3457a82568861b3c33" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-python-darwin-x86-2.7.5" path="prebuilts/python/darwin-x86/2.7.5" revision="0163e36dc4b60aba48f99234f9023519abbe6517" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-python-linux-x86-2.7.5" path="prebuilts/python/linux-x86/2.7.5" revision="92798e5ef70d582950e3d9fa67873de9795ab502" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-qemu-kernel" path="prebuilts/qemu-kernel" revision="94dd30986196161b0ecdf4a465dc94e42e5d733c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-r8" path="prebuilts/r8" revision="0cce9ba5c2de58ddea785c3b3bb22bd539d005a6" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-sdk" path="prebuilts/sdk" revision="f695b827bbb5c949e0a82b2c2d5fa8f22ac068d9" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-tools" path="prebuilts/tools" revision="8ea67fb27733ff52fd1e6ebce6f2cc6640623298" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-vndk-v27" path="prebuilts/vndk/v27" revision="41916ec6cd947a705902cb20534e83960cb7b013" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-prebuilts-vndk-v28" path="prebuilts/vndk/v28" revision="0c2cb64ca1682a67034c3163d92ae1b6e1207ec3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-sdk" path="sdk" revision="d40ca99b08984704448e04c6672ab9169e7ce924" upstream="BFX-UA300_5.4.0">
<linkfile dest="frameworks/support/README.md" src="current/androidx-README.md"/>
</project>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-apex" path="system/apex" revision="08cc8bec6591a938b6095dc7bc541219dd2078e3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-ashmemd" path="system/ashmemd" revision="540d579f3079b1796414f12118632c6adc9387e3" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-bpf" path="system/bpf" revision="ce03e13a8e28cd2e53784f0447759b7b7355ab9c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-bpfprogs" path="system/bpfprogs" revision="89c774dd2bf349c81ede1db7a599eb5cb0a43515" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-bt" path="system/bt" revision="76c48140a4ad7db697827457526b047d4f7479f5" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-ca-certificates" path="system/ca-certificates" revision="c6416488c70654f91a46ff1bce706c97389d4a8e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-chre" path="system/chre" revision="06146d54884c7a60d2419326939d0558b6d5a692" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-connectivity-wificond" path="system/connectivity/wificond" revision="2e4f97226fd858f1a01a5d32845ec8981644beed" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-connectivity-wifilogd" path="system/connectivity/wifilogd" revision="4dcae5651bcb21789929ba7f080e92e207fe5628" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-core" path="system/core" revision="3634ae29c8edf1e61a12425c278a1cd0ac08c851" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-extras" path="system/extras" revision="14ac430440fb1ee105680d84e1500be8ef9400e7" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-gatekeeper" path="system/gatekeeper" revision="c9e9e63bf9147a900ae7d0a5f6b0723b8eb717cb" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-gsid" path="system/gsid" revision="16530ede0d2b85e0465f0216b87d95df670a2708" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-hardware-interfaces" path="system/hardware/interfaces" revision="a3afeba0e083c2759af3ab11e72b01b5e7d5d1bb" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-hwservicemanager" path="system/hwservicemanager" revision="c7c5db80460b4a6d19371165941cf1caa345bc7c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-iorap" path="system/iorap" revision="441263b835fd877878b741af7a0d3965c5282130" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-keymaster" path="system/keymaster" revision="65efdbdee288c39389993a6da6d263539fae8123" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-libfmq" path="system/libfmq" revision="ebc3419c62eceeb00d9960c4810b323f2679a3bb" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-libhidl" path="system/libhidl" revision="65c02b0eb0874b54f19ae408b7a4bead12ab593b" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-libhwbinder" path="system/libhwbinder" revision="df2463d2f78e1aa6889ca2168d695eba551f6cf8" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-libsysprop" path="system/libsysprop" revision="efe33c9f53f833cb582a1f623d6418939519a1b6" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-libufdt" path="system/libufdt" revision="715ca232a5b4b870968eceedc332eb84cf312963" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-libvintf" path="system/libvintf" revision="57d58ff3d5db0d78bf80e8a85706f77120506a85" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-linkerconfig" path="system/linkerconfig" revision="729bc5978e09f803c12e26e377f18bd022166cc7" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-media" path="system/media" revision="977975deb02d65e07870a62089f4891a6501d391" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-netd" path="system/netd" revision="db8d73e0b3c36d3b15cc80bec2cf031dbef7547c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-nfc" path="system/nfc" revision="ed463a1b44f56e18ded6fc74a1a43ea494c7f062" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-nvram" path="system/nvram" revision="0f6a0aa324ba9f6197f4f9b4a26c3db4fcd2935f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-security" path="system/security" revision="6574ead72d6691b906af7a1cdd7479cf219fe49c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-sepolicy" path="system/sepolicy" revision="d3c4284673044406f654e2cd7afeaa0ff5ffd02c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-server_configurable_flags" path="system/server_configurable_flags" revision="1d7caad900cb9cc24202d8aea5387a363135b2e1" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-testing-gtest_extras" path="system/testing/gtest_extras" revision="7eae4114c5b03eb4b991167a2eacabf021f50441" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-timezone" path="system/timezone" revision="2caa43b60ced0a2f026a6d27701703579b51e2ad" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-tools-aidl" path="system/tools/aidl" revision="23dd4ea76f01eec30ac99b603982682ea5176688" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-tools-hidl" path="system/tools/hidl" revision="df179c7d547c13860f6b0cbd060fa50fc53063cb" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-tools-sysprop" path="system/tools/sysprop" revision="99a0a81d73929cff8cbb3115c65eb779017e09ae" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-tools-xsdc" path="system/tools/xsdc" revision="b564858b10510e64b44e3afd4c8dffe66dc249fb" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-ucontainer" path="system/ucontainer" revision="b63e91330946f9c73e1c72032cfc31d1a8c9bc8f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-update_engine" path="system/update_engine" revision="30176ddeae8a6262c321cf8080cf8194d7bde0c7" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-system-vold" path="system/vold" revision="a352de1f95762adfe4efe5a9cac96bf938bd7c88" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-test-framework" path="test/framework" revision="d197e5e045630cfbcfc9313c95fcbbde61fb2bfc" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-test-mlts-benchmark" path="test/mlts/benchmark" revision="f837b5a0a561fa0a96e483d7c8fae0b0ae65b5ac" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-test-mlts-models" path="test/mlts/models" revision="a92852efb52754926c69e9cdbe651de935f55349" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-test-sts" path="test/sts" revision="4ea5f5482bafb264872f66e8a188afb1b9e3289f" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-test-suite_harness" path="test/suite_harness" revision="d1dc7ca85df83c11cbce1420039e8b119f65de95" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-test-vti-alert" path="test/vti/alert" revision="2270d160e38f0623d708cce36754fe14168dce64" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-test-vti-dashboard" path="test/vti/dashboard" revision="a9bd47e4caa21d535fb89c0e6efe23fa08d25847" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-test-vti-fuzz_test_serving" path="test/vti/fuzz_test_serving" revision="6319e3d94c65669050c49c6ca570096d41823b82" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-test-vti-test_serving" path="test/vti/test_serving" revision="417ad51c260dc9d0bfc6b64e567fa67b112c1560" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-test-vts" path="test/vts" revision="fda9b4904a8f831ba657898fe9fe5cdec9125493" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-test-vts-testcase-fuzz" path="test/vts-testcase/fuzz" revision="3845288c52bf080b0c5a01005de15e11a0033254" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-test-vts-testcase-hal" path="test/vts-testcase/hal" revision="c1d9fbb134c12891dca374888d61ec0955b242f8" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-test-vts-testcase-hal-trace" path="test/vts-testcase/hal-trace" revision="2695892568f8fade958ec0ec172df8f295ae4112" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-test-vts-testcase-kernel" path="test/vts-testcase/kernel" revision="2fb6198c35a0a33467a439d177d5d2b4d4652044" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-test-vts-testcase-nbu" path="test/vts-testcase/nbu" revision="0712e2a442364af77a0b1dda0adf922d1d1447bc" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-test-vts-testcase-performance" path="test/vts-testcase/performance" revision="f0e5dcee43de6f9c44a3872721087d96eaa48273" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-test-vts-testcase-security" path="test/vts-testcase/security" revision="eea627799809b8983ccfb97423e1447bdca8146e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-test-vts-testcase-vndk" path="test/vts-testcase/vndk" revision="5c3af3d1069012326ad2cac89be6419b371a5ce2" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-tools-acloud" path="tools/acloud" revision="a4701b3b46bef2c27ad138ff93c3ed993844e470" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-tools-apifinder" path="tools/apifinder" revision="7fa228a612a41c551ddd786c79bd84294699178c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-tools-apksig" path="tools/apksig" revision="83eec36412695949f24be9d917ed7ba26fff3f5c" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-tools-apkzlib" path="tools/apkzlib" revision="ae1086c47adc35af5c36b5f2e93afc0c2ce27a8a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-tools-asuite" path="tools/asuite" revision="e301e8ebc29a550920f2aea7d9591ed90b13080a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-tools-currysrc" path="tools/currysrc" revision="2e5983face85bcb39a206900879e2db530765169" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-tools-dexter" path="tools/dexter" revision="71670e520938b04268283dc53cda1e167610952e" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-tools-loganalysis" path="tools/loganalysis" revision="20dc959b5b29014b16cc6ad4318918d70c65c841" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-tools-metalava" path="tools/metalava" revision="edcafddcb54e149af8d4135a346501dde802fb30" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-tools-ndkports" path="tools/ndkports" revision="74fefbc2160250129cbd157272fcfb3c9ac20f18" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-tools-repohooks" path="tools/repohooks" revision="a4350d0cc24b53d77b2cea9b8a9a2e2ff9e828f7" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-tools-security" path="tools/security" revision="3c5ee5d6f2f50895611eacd71a62b11efcfb0648" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-tools-test-connectivity" path="tools/test/connectivity" revision="428b0925776d925a1cb1d1c89e61c023469a87eb" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-tools-test-graphicsbenchmark" path="tools/test/graphicsbenchmark" revision="ed1a7ab48149fd3c96d2dc841bea4feb3c361857" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-tools-tradefederation" path="tools/tradefederation/core" revision="6be2b995c4a23416e0bc6ddc53fce210bc2c8239" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-tools-tradefederation-contrib" path="tools/tradefederation/contrib" revision="150a6187b5c01ec10e6389888d64641272900f01" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-tools-trebuchet" path="tools/trebuchet" revision="5c74aa19df59af3292dadc6db03ffbf5235b3a9d" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-tools-vendor-google_prebuilts-arc" path="tools/vendor/google_prebuilts/arc" revision="f7e95a08c24a975117746a0f36f730a48db79287" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-vendor-google_gtvs" path="vendor/google_gtvs" revision="64e9ad9d7aeb4682c52dd1d6f4cf1ac1d3b69c20" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-vendor-google_vts" path="vendor/google_vts" revision="f07a8f0eb404e41b14c74df5bd7c498a68448221" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="platform-vendor-widevine" path="vendor/widevine" revision="fe7add10ba37bed587a6f3a7b3e45411c1eb7085" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BTF_API_LEVEL_7_android-10" groups="skb_bcf" name="scm" path="vendor/skb/framework/scm" remote="skb_bcf" revision="6354afd3962791c17a770ade20276c8b165c18c3" upstream="BTF_API_LEVEL_7_android-10">
<linkfile dest="sync_btf_src.sh" src="sync_btf_src.sh"/>
</project>
<project dest-branch="BTF_API_LEVEL_7" groups="skb_prebuilts" name="skb_bt-services" path="vendor/skb/prebuilts/skb_bt-services" remote="skb_prebuilts" revision="ba1c593710a89be7f429af36f9ef666bf645020c" sync-c="true" sync-tags="false" upstream="BTF_API_LEVEL_7"/>
<project dest-branch="BTF_API_LEVEL_7" groups="skb_prebuilts" name="skb_device-control-app" path="vendor/skb/prebuilts/skb_device-control-app" remote="skb_prebuilts" revision="54b0b79989c71946230fe761045cf826a9397e93" sync-c="true" sync-tags="false" upstream="BTF_API_LEVEL_7"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="skb_device-profile" path="vendor/skb/device-profile" remote="skb_prebuilts" revision="4e584d715166a54fe056c20f47d8917663e2e7f8" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BTF_API_LEVEL_7" groups="skb_prebuilts" name="skb_edmp" path="vendor/skb/prebuilts/skb_edmp" remote="skb_prebuilts" revision="f834f59a9617de1d6a1596acfe83d351fe7e39c2" sync-c="true" sync-tags="false" upstream="BTF_API_LEVEL_7"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="skb_fonts" path="vendor/skb/prebuilts/skb_fonts" remote="skb_prebuilts" revision="2656f17fc0c0b1783e7aa7606dddfdd898b77986" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="release/5.4.0" groups="skb_prebuilts,testauto" name="skb_hlsplayer" path="vendor/skb/prebuilts/skb_hlsplayer" remote="skb_prebuilts" revision="4c7b9180248176f03da0a5b93946060cd2a06455" sync-c="true" sync-tags="false" upstream="release/5.4.0"/>
<project dest-branch="BTF_API_LEVEL_7" groups="skb_prebuilts" name="skb_ime" path="vendor/skb/prebuilts/skb_ime" remote="skb_prebuilts" revision="398fa28553cd5e29f5bb864a3b9daee69df0f12d" sync-c="true" sync-tags="false" upstream="BTF_API_LEVEL_7"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="skb_kids-guide" path="vendor/skb/prebuilts/skb_kids-guide" remote="skb_prebuilts" revision="c06930386e3b3e2545f36e62b4f446c22c068842" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BTF_API_LEVEL_7_CTS" groups="skb_prebuilts" name="skb_logsystem" path="vendor/skb/prebuilts/skb_logsystem" remote="skb_prebuilts" revision="3af69359bd4edf4e57fde4e98143462a43467e62" sync-c="true" sync-tags="false" upstream="BTF_API_LEVEL_7_CTS"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="skb_memory-monitor" path="vendor/skb/prebuilts/skb_memory-monitor" remote="skb_prebuilts" revision="09d77b8ee9d4386dfaf60119ebc9afa1515ced12" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="skb_menu-image" path="vendor/skb/prebuilts/skb_menu-image" remote="skb_prebuilts" revision="f96f332f80f416295ba0d279748826f6deb65c04" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BTF_API_LEVEL_7" groups="skb_prebuilts" name="skb_navigator" path="vendor/skb/prebuilts/skb_navigator" remote="skb_prebuilts" revision="e7bf6b95661910ac17c944e60d6504f9c494e1b3" sync-c="true" sync-tags="false" upstream="BTF_API_LEVEL_7"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="skb_rcu-firmware" path="vendor/skb/prebuilts/skb_rcu-firmware" remote="skb_prebuilts" revision="e55993b6fa710023a4602c0cb3e6815b2e439667" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BTF_API_LEVEL_7" groups="skb_prebuilts" name="skb_smartrcuagent" path="vendor/skb/prebuilts/skb_smartrcuagent" remote="skb_prebuilts" revision="6312e048f731bf8cf7bd8d49e248a188235de0ec" sync-c="true" sync-tags="false" upstream="BTF_API_LEVEL_7"/>
<project dest-branch="BTF_API_LEVEL_7" groups="skb_prebuilts" name="skb_xwalk" path="vendor/skb/prebuilts/skb_xwalk" remote="skb_prebuilts" revision="a232320be31194169dfdc46c3a8693bffcef9c3f" sync-c="true" sync-tags="false" upstream="BTF_API_LEVEL_7"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="skp_animatedad" path="vendor/skb/prebuilts/skp_animatedad" remote="skb_prebuilts" revision="a497c7c13adb3e98540ac4f4e90f4d088ec986a9" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="skp_cs-lib" path="vendor/skb/prebuilts/skp_cs-lib" remote="skb_prebuilts" revision="5a751b6986800b8bcf03c650f517104b1410f539" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="skp_rtsp" path="vendor/skb/prebuilts/skp_rtsp" remote="skb_prebuilts" revision="28a08635e31993f7b3f0a3a057a1d6ae9e04e928" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="skt_mpp" path="vendor/skb/prebuilts/skt_mpp" remote="skb_prebuilts" revision="5cb327016d3259014b213c0ffa83c89187fab57e" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="skt_nugu" path="vendor/skb/prebuilts/skt_nugu" remote="skb_prebuilts" revision="c51f05bc042cbc146e55bdf9bbb8bbea636b4b66" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="tisquare_family-earphone" path="vendor/skb/prebuilts/tisquare_family-earphone" remote="skb_prebuilts" revision="5324b42b5e84b331204813cc9c6cd33fb32619d7" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="tisquare_mdns-manager" path="vendor/skb/prebuilts/tisquare_mdns-manager" remote="skb_prebuilts" revision="d4556dc2434221873e9761015cc971b4e47fa8ad" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" name="toolchain-pgo-profiles" path="toolchain/pgo-profiles" revision="01759dfb7a82934d9bc279c960445d10f5c0acbb" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="uei_quickset" path="vendor/skb/prebuilts/uei_quickset" remote="skb_prebuilts" revision="077d476da1e9e931317c89f1a63385df3e868a38" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="foxconn" name="vendor-foxconn" path="vendor/foxconn" revision="e990cbf89ca02619c4b8805b20a4b56cd412587a" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="bg5ct-android-10" groups="mw" name="vendor-mw-sptek" path="vendor/sptek" remote="sptek-syna" revision="74cba2856b3332592ee90b83f38f4fbff45844fb" upstream="bg5ct-android-10"/>
<project dest-branch="BFX-UA300_5.4.0" groups="foxconn,sptek" name="vendor-scripts" path="vendor/scripts" revision="982444a6bc120a438d99549fc18e99981d2c7994" upstream="BFX-UA300_5.4.0">
<linkfile dest="build_all.sh" src="build_all.sh"/>
<linkfile dest="updatezip.sh" src="updatezip.sh"/>
<linkfile dest="env.sh" src="env.sh"/>
<linkfile dest="release.sh" src="release.sh"/>
</project>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="zinnaworks_push-agent" path="vendor/skb/prebuilts/zinnaworks_push-agent" remote="skb_prebuilts" revision="f7a328fcba9123a1c38d4d9f037e7db867221916" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<project dest-branch="BFX-UA300_5.4.0" groups="skb_prebuilts" name="zooinnet_rtsp" path="vendor/skb/prebuilts/zooinnet_rtsp" remote="skb_prebuilts" revision="0fdfacba5efd86343d6616176590860cdb918560" sync-c="true" sync-tags="false" upstream="BFX-UA300_5.4.0"/>
<repo-hooks enabled-list="pre-upload" in-project="platform-tools-repohooks"/>
</manifest>
|
|
|
Hi Sangmin Choi. Please download test FW from ALT Server. /release_by_fxn/swan_test_image/20231127_mantis1496 Jerry |
|
|
Hello, Jerry, Could you please build a test firmware after applied attached patches? SD only. This firmware should be built under 540 branches. vendor/synaptics/vsxxx zapping_test.diff Thank you. Sangmin Choi. zapping_test.diff (898 bytes)
diff --git a/audio/AudioStreamNonTunnelOut.cpp b/audio/AudioStreamNonTunnelOut.cpp
index 7a71eb5..00e6d56 100755
--- a/audio/AudioStreamNonTunnelOut.cpp
+++ b/audio/AudioStreamNonTunnelOut.cpp
@@ -335,7 +335,7 @@ ssize_t AudioStreamNonTunnelOut::write(const void *buffer, size_t bytes)
}
if (audio_is_linear_pcm(mConfig.format)) {
-
+#if 0
//Vas add start for muting APP audio in AMP_SND module; River 2021/01/12
static bool bMuteStatus=false;
static UINT orgVol;
@@ -356,7 +356,7 @@ ssize_t AudioStreamNonTunnelOut::write(const void *buffer, size_t bytes)
}
}
//Vas add end for muting APP audio in AMP_SND module;River 2021/01/12
-
+#endif
rc = AMP_SND_PushPCM_NonBlock(mStreamHandle[AUDIO_STREAM_IDX_PCM], buf, bytes);
CHECK_RESULT(rc);
if (rc != S_OK) {
|
|
|
Hi Sangmin, >>vendor/synaptics/vsxxx >>zapping_test.diff Done /release_by_fxn/tmp/zapping_test Thanks, Jason |
|
|
Hello, Jerry, Could you please build a test firmware after applied attached patches? SD only. This firmware should be built under 540 branches. vendor/synaptics/vsxxx debug_message_AudioStreamNonTunnelOut.diff Thank you. Sangmin Choi. debug_message_AudioStreamNonTunnelOut.diff (655 bytes)
diff --git a/audio/AudioStreamNonTunnelOut.cpp b/audio/AudioStreamNonTunnelOut.cpp
index 7a71eb5..15b9bb8 100755
--- a/audio/AudioStreamNonTunnelOut.cpp
+++ b/audio/AudioStreamNonTunnelOut.cpp
@@ -314,7 +314,7 @@ ssize_t AudioStreamNonTunnelOut::write(const void *buffer, size_t bytes)
#else
uiSleepTimeMs = (uiSleepTimeMs >= 10)? uiSleepTimeMs: 10;
#endif
- MVLOGV("SLEEP for %d ms, %d, flag:0x%x",
+ MVLOGD("SLEEP for %d ms, %d, flag:0x%x",
uiSleepTimeMs, uiPipeFullnessMs, uiStatFlag);
usleep(uiSleepTimeMs*1000);
uiPushBlockedMs += uiSleepTimeMs;
|
|
|
Hi Sangmin, >>vendor/synaptics/vsxxx >>debug_message_AudioStreamNonTunnelOut.diff /release_by_fxn/tmp/debug_message_AudioStreamNonTunnelOut Thanks, Jason |
|
|
Hi Sangmin Choi. Please download test FW from ALT Server. /release_by_fxn/swan_test_image/20231219_mantis1496 Jerry |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2022-06-22 08:46 | (ALTech) Sangmin Choi | New Issue | |
| 2022-06-22 08:46 | (ALTech) Sangmin Choi | Status | new => assigned |
| 2022-06-22 08:46 | (ALTech) Sangmin Choi | Assigned To | => (SW) Jason Ling |
| 2022-06-22 08:46 | (ALTech) Sangmin Choi | File Added: nugu-stb-bfx_ua300-user-3.13.5.apk | |
| 2022-06-22 10:14 |
|
Status | assigned => resolved |
| 2022-06-22 10:14 |
|
Resolution | open => fixed |
| 2022-06-22 10:14 |
|
Note Added: 0010225 | |
| 2022-06-22 10:33 | (ALTech) Sangmin Choi | Status | resolved => closed |
| 2022-06-22 10:33 | (ALTech) Sangmin Choi | Note Added: 0010226 | |
| 2022-06-30 10:13 | (ALTech) Sangmin Choi | Status | closed => feedback |
| 2022-06-30 10:13 | (ALTech) Sangmin Choi | Resolution | fixed => reopened |
| 2022-06-30 10:13 | (ALTech) Sangmin Choi | Note Added: 0010269 | |
| 2022-06-30 10:14 | (ALTech) Sangmin Choi | Summary | Build a test image include attached NUGU apk. => Please build a test image. |
| 2022-06-30 10:14 | (ALTech) Sangmin Choi | Description Updated | |
| 2022-06-30 10:17 | (ALTech) Sangmin Choi | File Added: 0001-hls-1.5-2.patch | |
| 2022-06-30 10:17 | (ALTech) Sangmin Choi | Note Added: 0010270 | |
| 2022-06-30 10:17 | (ALTech) Sangmin Choi | Status | feedback => assigned |
| 2022-06-30 13:50 |
|
Note Added: 0010271 | |
| 2022-06-30 13:50 |
|
Assigned To | (SW) Jason Ling => (ALTech) Sangmin Choi |
| 2022-06-30 13:51 |
|
Status | assigned => resolved |
| 2022-06-30 13:51 |
|
Resolution | reopened => fixed |
| 2022-06-30 14:45 | (ALTech) Sangmin Choi | Note Added: 0010273 | |
| 2022-06-30 15:01 | (ALTech) Sangmin Choi | Note Added: 0010274 | |
| 2022-06-30 15:02 |
|
Note Added: 0010275 | |
| 2022-06-30 15:39 | (ALTech) Sangmin Choi | File Added: 0001-frameworks-av-increase_audio_input_buffer.patch | |
| 2022-06-30 15:39 | (ALTech) Sangmin Choi | File Added: 0001-hls-1.5-2-2.patch | |
| 2022-06-30 15:39 | (ALTech) Sangmin Choi | Note Added: 0010276 | |
| 2022-06-30 16:16 | (ALTech) Sangmin Choi | File Added: 1124994_0001-SKB-MMCEI-9909-AHAL-PTS-delivery-for-DD-pass-throu.patch | |
| 2022-06-30 16:16 | (ALTech) Sangmin Choi | File Added: 0001-frameworks-av-increase_audio_input_buffer-2.patch | |
| 2022-06-30 16:16 | (ALTech) Sangmin Choi | File Added: 0001-hls-1.5-2-3.patch | |
| 2022-06-30 16:16 | (ALTech) Sangmin Choi | Note Added: 0010277 | |
| 2022-06-30 17:14 | (ALTech) Sangmin Choi | Note Edited: 0010277 | |
| 2022-06-30 17:15 | (ALTech) Sangmin Choi | Note Edited: 0010277 | |
| 2022-06-30 17:15 | (ALTech) Sangmin Choi | Note Edited: 0010277 | |
| 2022-06-30 18:49 |
|
Note Added: 0010282 | |
| 2022-07-12 10:27 | (ALTech) Sangmin Choi | Note Added: 0010348 | |
| 2022-07-12 10:27 | (ALTech) Sangmin Choi | Assigned To | (ALTech) Sangmin Choi => (SW) Jason Ling |
| 2022-07-12 12:08 | (ALTech) Sangmin Choi | Note Edited: 0010348 | |
| 2022-07-12 15:29 |
|
Note Added: 0010350 | |
| 2022-07-29 17:01 | (ALTech) Sangmin Choi | Note Added: 0010488 | |
| 2022-07-29 17:01 | (ALTech) Sangmin Choi | File Added: 0001-MMCEI-9962-AI2-47-AppleTV-FF-3X-and-1X-resume-issue-.patch | |
| 2022-07-29 17:02 | (ALTech) Sangmin Choi | Status | resolved => feedback |
| 2022-07-29 17:02 | (ALTech) Sangmin Choi | Resolution | fixed => reopened |
| 2022-07-29 21:24 |
|
Note Added: 0010490 | |
| 2022-07-29 21:25 |
|
Assigned To | (SW) Jason Ling => (ALTech) Sangmin Choi |
| 2022-08-04 13:57 | (ALTech) Sangmin Choi | Note Added: 0010525 | |
| 2022-08-04 13:58 | (ALTech) Sangmin Choi | Note Edited: 0010525 | |
| 2022-08-04 14:02 | (ALTech) Sangmin Choi | Assigned To | (ALTech) Sangmin Choi => (SW) Jason Ling |
| 2022-08-04 16:28 |
|
Assigned To | (SW) Jason Ling => (ALTech) Sangmin Choi |
| 2022-08-04 16:28 |
|
Status | feedback => resolved |
| 2022-08-04 16:28 |
|
Resolution | reopened => fixed |
| 2022-08-04 16:28 |
|
Note Added: 0010528 | |
| 2022-08-25 09:29 | (ALTech) Sangmin Choi | Note Added: 0010708 | |
| 2022-08-25 09:29 | (ALTech) Sangmin Choi | File Added: patch_ai2_41.tgz | |
| 2022-08-25 09:29 | (ALTech) Sangmin Choi | File Added: 20220825_0001-hls-1.5-patch-1-1.patch | |
| 2022-08-25 09:29 | (ALTech) Sangmin Choi | File Added: 20220825_0001-frameworks-av-increase_audio_input_buffer.patch | |
| 2022-08-25 09:29 | (ALTech) Sangmin Choi | Assigned To | (ALTech) Sangmin Choi => (SW) Jason Ling |
| 2022-08-25 09:29 | (ALTech) Sangmin Choi | Status | resolved => feedback |
| 2022-08-25 09:29 | (ALTech) Sangmin Choi | Resolution | fixed => reopened |
| 2022-08-25 14:42 |
|
Assigned To | (SW) Jason Ling => (ALTech) Sangmin Choi |
| 2022-08-25 14:42 |
|
Note Added: 0010712 | |
| 2022-08-25 14:58 | (ALTech) Sangmin Choi | Issue Monitored: (ALTech) Sangmin Choi | |
| 2022-08-25 15:27 | (ALTech) Sangmin Choi | Note Added: 0010714 | |
| 2022-08-25 15:27 | (ALTech) Sangmin Choi | File Added: enable_ampdiag_log.patch | |
| 2022-08-25 15:57 | (ALTech) Sangmin Choi | Note Added: 0010716 | |
| 2022-08-25 15:57 | (ALTech) Sangmin Choi | File Added: outputimage_4296.zip | |
| 2022-08-25 16:05 |
|
Issue Monitored: (SW) Dean Chiang | |
| 2022-08-25 17:21 |
|
Note Added: 0010717 | |
| 2022-08-25 17:21 |
|
Note Edited: 0010717 | |
| 2022-08-25 18:06 |
|
Note Edited: 0010717 | |
| 2022-09-06 09:17 | (ALTech) Sangmin Choi | Note Added: 0010798 | |
| 2022-09-06 09:17 | (ALTech) Sangmin Choi | File Added: 0002-https-sc-debu-git.synaptics.com-gerrit-c-171604.patch | |
| 2022-09-06 09:17 | (ALTech) Sangmin Choi | File Added: 0001-https-sc-debu-git.synaptics.com-gerrit-c-162747.patch | |
| 2022-09-06 09:17 | (ALTech) Sangmin Choi | File Added: 0004-https-sc-debu-git.synaptics.com-gerrit-c-171604-2.patch | |
| 2022-09-06 09:17 | (ALTech) Sangmin Choi | File Added: 0003-empty_bd_pool-crash.patch | |
| 2022-09-06 11:32 |
|
Note Added: 0010804 | |
| 2022-09-13 17:04 | (ALTech) Sangmin Choi | Note Added: 0010846 | |
| 2022-09-14 08:44 | (ALTech) Sangmin Choi | Note Added: 0010848 | |
| 2022-09-14 08:44 | (ALTech) Sangmin Choi | File Added: MMCEI-9987_SKBSBLT-191_patch (1).zip | |
| 2022-09-14 08:45 | (ALTech) Sangmin Choi | Assigned To | (ALTech) Sangmin Choi => (SW) Dean Chiang |
| 2022-09-15 14:45 |
|
Note Added: 0010873 | |
| 2022-09-23 13:34 | (ALTech) Sangmin Choi | Note Added: 0010921 | |
| 2022-09-23 13:34 | (ALTech) Sangmin Choi | Status | feedback => assigned |
| 2022-09-23 16:44 |
|
Note Added: 0010928 | |
| 2022-09-27 08:15 | (ALTech) Sangmin Choi | Note Added: 0010936 | |
| 2022-09-27 14:52 |
|
Note Added: 0010939 | |
| 2022-10-06 15:56 | (ALTech) Sangmin Choi | Note Added: 0010979 | |
| 2022-10-06 15:56 | (ALTech) Sangmin Choi | File Added: 7fe1241.diff | |
| 2022-10-06 19:40 |
|
Note Added: 0010983 | |
| 2022-10-13 10:21 | (ALTech) Sangmin Choi | Note Added: 0011036 | |
| 2022-10-13 10:21 | (ALTech) Sangmin Choi | File Added: 0001-MMCEI-9987-congested-vbi-interrupt-filtering-2.patch | |
| 2022-10-14 14:29 |
|
Note Added: 0011048 | |
| 2022-11-10 09:02 | (ALTech) Sangmin Choi | Note Added: 0011194 | |
| 2022-11-10 12:28 |
|
Note Added: 0011199 | |
| 2022-11-16 15:31 | (ALTech) Sangmin Choi | Note Added: 0011233 | |
| 2022-11-16 15:31 | (ALTech) Sangmin Choi | File Added: 1274333_0001-PATCH-MMCEI-9987-congested-vbi-interrupt-filtering-3.patch | |
| 2022-11-16 18:18 |
|
Note Added: 0011235 | |
| 2022-12-05 12:38 | (ALTech) Sangmin Choi | Note Added: 0011391 | |
| 2022-12-05 12:38 | (ALTech) Sangmin Choi | File Added: 0001-remove_zram_swap_file.patch | |
| 2022-12-05 17:04 |
|
Note Added: 0011396 | |
| 2022-12-06 10:45 | (ALTech) Sangmin Choi | Note Added: 0011402 | |
| 2022-12-06 12:26 | (ALTech) Sangmin Choi | Note Added: 0011404 | |
| 2022-12-06 14:46 |
|
Note Added: 0011405 | |
| 2022-12-09 10:44 | (ALTech) Sangmin Choi | Note Added: 0011439 | |
| 2022-12-09 10:44 | (ALTech) Sangmin Choi | File Added: AI2-100-vdec-1.patch | |
| 2022-12-09 10:44 | (ALTech) Sangmin Choi | File Added: AI2-100-amp_wrapper-2.patch | |
| 2022-12-09 15:29 |
|
Note Added: 0011446 | |
| 2022-12-14 12:59 | (ALTech) Sangmin Choi | Note Added: 0011480 | |
| 2022-12-15 18:22 | (SW) Jim Chen | Note Added: 0011498 | |
| 2023-01-06 14:39 | (ALTech) Sangmin Choi | Note Added: 0011696 | |
| 2023-01-06 14:39 | (ALTech) Sangmin Choi | File Added: SKBSBLT-191.patch | |
| 2023-01-06 19:32 | (SW) Jim Chen | Note Added: 0011705 | |
| 2023-01-06 19:33 | (SW) Jim Chen | Issue Monitored: (SW) Jim Chen | |
| 2023-01-30 09:54 | (ALTech) Sangmin Choi | Note Added: 0011867 | |
| 2023-01-30 09:54 | (ALTech) Sangmin Choi | File Added: CSMSKBSBLT-201-Unmute-HDMI.patch | |
| 2023-01-30 12:13 |
|
Note Added: 0011877 | |
| 2023-01-30 16:20 | (ALTech) Sangmin Choi | Note Added: 0011882 | |
| 2023-01-30 16:20 | (ALTech) Sangmin Choi | File Added: ref_v534r27_D735.xml | |
| 2023-01-30 16:20 | (ALTech) Sangmin Choi | File Added: CSMSKBSBLT-201-Unmute-HDMI-2.patch | |
| 2023-01-31 11:30 |
|
Note Added: 0011909 | |
| 2023-02-13 16:27 | (ALTech) Sangmin Choi | Note Added: 0012149 | |
| 2023-02-13 16:27 | (ALTech) Sangmin Choi | File Added: BTVSBOX-629-PCR-offset.patch | |
| 2023-02-14 14:54 |
|
Note Added: 0012170 | |
| 2023-02-21 10:29 | (ALTech) Sangmin Choi | Note Added: 0012271 | |
| 2023-02-21 10:29 | (ALTech) Sangmin Choi | File Added: 0001-BTVV-5675-MAX_KEY_PER_SESSION-26-100.patch | |
| 2023-02-21 15:09 |
|
Note Added: 0012280 | |
| 2023-02-23 14:46 | (ALTech) Sangmin Choi | Note Added: 0012340 | |
| 2023-02-23 14:46 | (ALTech) Sangmin Choi | File Added: 0001-19.536.904.patch | |
| 2023-02-23 16:10 |
|
Note Added: 0012349 | |
| 2023-03-02 09:14 | (ALTech) Sangmin Choi | Note Added: 0012396 | |
| 2023-03-02 09:14 | (ALTech) Sangmin Choi | File Added: 0001-19.536.906.patch | |
| 2023-03-02 10:37 |
|
Note Added: 0012400 | |
| 2023-03-06 09:39 | (ALTech) Sangmin Choi | Note Added: 0012434 | |
| 2023-03-06 09:39 | (ALTech) Sangmin Choi | File Added: 0001-19.536.907.patch | |
| 2023-03-06 14:00 |
|
Note Added: 0012437 | |
| 2023-03-08 15:04 | (ALTech) Sangmin Choi | Note Added: 0012467 | |
| 2023-03-08 15:04 | (ALTech) Sangmin Choi | File Added: 0001-19.536.908.patch | |
| 2023-03-08 15:53 |
|
Assigned To | (SW) Dean Chiang => (SW) Jerry Lin |
| 2023-03-08 19:08 | (SW) Jerry Lin | Note Added: 0012474 | |
| 2023-03-09 10:31 | (ALTech) Sangmin Choi | Note Added: 0012479 | |
| 2023-03-09 14:04 | (SW) Jerry Lin | Note Added: 0012483 | |
| 2023-03-10 10:03 | (ALTech) Sangmin Choi | Note Added: 0012498 | |
| 2023-03-10 11:09 | (ALTech) Sangmin Choi | Note Added: 0012500 | |
| 2023-03-10 11:09 | (ALTech) Sangmin Choi | File Added: MMCEI-10037-do-not-send-zero-110541.patch | |
| 2023-03-10 14:26 | (SW) Jerry Lin | Note Added: 0012505 | |
| 2023-03-16 16:27 | (ALTech) Sangmin Choi | Note Added: 0012556 | |
| 2023-03-16 16:27 | (ALTech) Sangmin Choi | File Added: BAIS2-799_stop_start_trace.patch | |
| 2023-03-16 19:15 | (SW) Jerry Lin | Note Added: 0012558 | |
| 2023-03-21 14:16 | (ALTech) Sangmin Choi | Note Added: 0012591 | |
| 2023-03-21 14:16 | (ALTech) Sangmin Choi | File Added: BAIS2-799_remove_amp_function_from_callback.patch | |
| 2023-03-21 16:14 | (SW) Jerry Lin | Note Added: 0012597 | |
| 2023-03-27 16:27 | (ALTech) Sangmin Choi | Note Added: 0012652 | |
| 2023-03-27 17:13 | (SW) Jerry Lin | Note Added: 0012656 | |
| 2023-03-27 20:07 | (SW) Jerry Lin | Note Added: 0012658 | |
| 2023-03-28 10:05 | (ALTech) Sangmin Choi | Note Added: 0012660 | |
| 2023-04-05 13:12 | (ALTech) Sangmin Choi | Note Added: 0012721 | |
| 2023-04-05 13:12 | (ALTech) Sangmin Choi | File Added: enable_log_timeout.patch | |
| 2023-04-05 14:58 | (SW) Jerry Lin | Note Added: 0012722 | |
| 2023-04-06 10:47 | (ALTech) Sangmin Choi | Note Added: 0012737 | |
| 2023-04-06 10:47 | (ALTech) Sangmin Choi | File Added: remove_mbuf_from_osal.patch | |
| 2023-04-06 18:33 | (ALTech) Sangmin Choi | Note Added: 0012748 | |
| 2023-04-07 11:38 | (ALTech) Sangmin Choi | Note Added: 0012756 | |
| 2023-04-07 13:40 | (SW) Jerry Lin | Note Added: 0012757 | |
| 2023-04-07 15:03 | (ALTech) Sangmin Choi | Note Added: 0012758 | |
| 2023-04-20 09:42 | (ALTech) Sangmin Choi | Note Added: 0012923 | |
| 2023-04-20 11:05 | (ALTech) Sangmin Choi | Note Added: 0012926 | |
| 2023-04-20 11:05 | (ALTech) Sangmin Choi | File Added: libskbrtsp.so | |
| 2023-04-20 16:26 | (SW) Jerry Lin | Note Added: 0012935 | |
| 2023-05-10 15:29 | (ALTech) Sangmin Choi | Note Added: 0013089 | |
| 2023-05-10 15:29 | (ALTech) Sangmin Choi | File Added: 0001-add_debug_message_in_AMP_ConnectComp.patch | |
| 2023-05-10 18:45 | (SW) Jerry Lin | Note Added: 0013091 | |
| 2023-05-15 10:25 | (ALTech) Sangmin Choi | Note Added: 0013119 | |
| 2023-05-15 11:05 | (SW) Jerry Lin | Note Added: 0013121 | |
| 2023-05-15 15:04 | (SW) Jerry Lin | Note Added: 0013129 | |
| 2023-05-16 14:56 | (ALTech) Sangmin Choi | Note Added: 0013142 | |
| 2023-05-16 14:56 | (ALTech) Sangmin Choi | File Added: SKBSBLT-215-test.patch | |
| 2023-05-16 17:58 | (SW) Jerry Lin | Note Added: 0013148 | |
| 2023-05-22 16:27 | (ALTech) Sangmin Choi | Note Added: 0013204 | |
| 2023-05-22 19:25 | (SW) Jerry Lin | Note Added: 0013205 | |
| 2023-06-08 12:48 | (ALTech) Sangmin Choi | Note Added: 0013312 | |
| 2023-06-08 12:48 | (ALTech) Sangmin Choi | File Added: change_debug_level.diff | |
| 2023-06-08 15:28 | (SW) Jerry Lin | Note Added: 0013317 | |
| 2023-06-13 13:30 | (ALTech) Sangmin Choi | Note Added: 0013348 | |
| 2023-06-13 13:30 | (ALTech) Sangmin Choi | File Added: 0001-AMP-event-add-mutex-for-rwlock-to-avoid-it-dead-lock.patch | |
| 2023-06-13 15:41 | (SW) Jerry Lin | Note Added: 0013355 | |
| 2023-06-22 16:31 | (ALTech) Sangmin Choi | Note Added: 0013483 | |
| 2023-06-23 08:30 | (SW) Jerry Lin | Note Added: 0013485 | |
| 2023-06-23 08:52 | (ALTech) Sangmin Choi | Note Added: 0013487 | |
| 2023-06-23 08:52 | (ALTech) Sangmin Choi | File Added: SKBSBLT-221-wakeup-time-test.patch | |
| 2023-06-23 08:52 | (ALTech) Sangmin Choi | File Added: outputimage_5004.zip | |
| 2023-06-26 08:25 | (SW) Jerry Lin | Note Added: 0013490 | |
| 2023-06-27 08:56 | (ALTech) Sangmin Choi | Note Added: 0013507 | |
| 2023-06-27 08:56 | (ALTech) Sangmin Choi | File Added: CSMSKBSBLT-216-debug-01.patch | |
| 2023-06-27 14:29 | (SW) Jerry Lin | Note Added: 0013511 | |
| 2023-06-29 12:35 | (ALTech) Sangmin Choi | Note Added: 0013527 | |
| 2023-06-29 12:35 | (ALTech) Sangmin Choi | File Added: outputimage_5004-2.zip | |
| 2023-06-29 12:35 | (ALTech) Sangmin Choi | File Added: SKBSBLT-221-wakeup-time-test-2.patch | |
| 2023-06-29 12:35 | (ALTech) Sangmin Choi | File Added: CSMAI2-68-trivial2.patch | |
| 2023-06-29 15:51 | (SW) Jerry Lin | Note Added: 0013530 | |
| 2023-07-03 10:25 | (ALTech) Sangmin Choi | Note Added: 0013546 | |
| 2023-07-03 10:25 | (ALTech) Sangmin Choi | File Added: CSMAI2-68-trivial.patch | |
| 2023-07-03 10:25 | (ALTech) Sangmin Choi | File Added: CSMAI2-68-trivial2-2.patch | |
| 2023-07-03 10:25 | (ALTech) Sangmin Choi | File Added: outputimage_5045.zip | |
| 2023-07-03 16:00 | (SW) Jerry Lin | Note Added: 0013549 | |
| 2023-07-04 12:32 | (ALTech) Sangmin Choi | Note Added: 0013555 | |
| 2023-07-04 12:32 | (ALTech) Sangmin Choi | File Added: CSMSKBSBLT-216-Remove-stop-start.patch | |
| 2023-07-04 12:32 | (ALTech) Sangmin Choi | File Added: CSMSKBSBLT-216-thread-lock.patch | |
| 2023-07-04 17:05 | (SW) Jerry Lin | Note Added: 0013562 | |
| 2023-07-11 12:36 | (ALTech) Sangmin Choi | Note Added: 0013601 | |
| 2023-07-11 12:36 | (ALTech) Sangmin Choi | File Added: CSMAI2-68-trivial2-3.patch | |
| 2023-07-11 12:36 | (ALTech) Sangmin Choi | File Added: CSMAI2-68-trivial-2.patch | |
| 2023-07-11 12:36 | (ALTech) Sangmin Choi | File Added: outputimage_5136.zip | |
| 2023-07-11 15:03 | (SW) Jerry Lin | Note Added: 0013606 | |
| 2023-07-24 10:42 | (ALTech) Sangmin Choi | Note Added: 0013677 | |
| 2023-07-24 10:42 | (ALTech) Sangmin Choi | File Added: BPM-20920.patch | |
| 2023-07-24 15:51 | (SW) Jerry Lin | Note Added: 0013683 | |
| 2023-07-31 16:09 | (ALTech) Sangmin Choi | Note Added: 0013773 | |
| 2023-07-31 18:14 | (SW) Jerry Lin | Note Added: 0013777 | |
| 2023-08-02 09:45 | (ALTech) Sangmin Choi | Note Added: 0013798 | |
| 2023-08-02 09:45 | (ALTech) Sangmin Choi | File Added: BPM-20665.patch | |
| 2023-08-02 11:02 | (SW) Jerry Lin | Note Added: 0013800 | |
| 2023-08-23 12:48 | (ALTech) Sangmin Choi | Note Added: 0013956 | |
| 2023-08-23 12:48 | (ALTech) Sangmin Choi | File Added: CSMSKBSBLT-211-ignore-the-request.patch | |
| 2023-08-23 19:39 | (SW) Jerry Lin | Note Added: 0013961 | |
| 2023-08-30 14:27 | (ALTech) Sangmin Choi | Note Added: 0014031 | |
| 2023-08-30 17:34 | (SW) Jerry Lin | Note Added: 0014039 | |
| 2023-08-30 17:41 | (ALTech) Sangmin Choi | Note Added: 0014040 | |
| 2023-08-30 19:02 | (SW) Jerry Lin | Note Added: 0014041 | |
| 2023-08-31 12:56 | (ALTech) Sangmin Choi | Note Added: 0014049 | |
| 2023-08-31 15:14 |
|
Note Added: 0014053 | |
| 2023-09-04 13:38 | (ALTech) Sangmin Choi | Note Added: 0014068 | |
| 2023-09-04 13:38 | (ALTech) Sangmin Choi | File Added: CSMSKBSBLT-211-ignore-the-request_v2.patch | |
| 2023-09-04 17:36 | (SW) Jerry Lin | Note Added: 0014072 | |
| 2023-10-11 10:16 | (ALTech) Wooshin Kang | Note Added: 0014260 | |
| 2023-10-11 10:16 | (ALTech) Wooshin Kang | File Added: 0009-auro-use-headroom-for-demo.patch | |
| 2023-10-11 10:18 | (ALTech) Wooshin Kang | Note Added: 0014261 | |
| 2023-10-11 10:18 | (ALTech) Wooshin Kang | File Added: SKB_STB_Home_UI5.0_AI2MAX_v1.22.0_vc1242_r23330_foxconn_20230907.apk | |
| 2023-10-11 15:45 | (ALTech) Wooshin Kang | Note Added: 0014265 | |
| 2023-10-11 15:45 | (ALTech) Wooshin Kang | File Added: SKB_STB_Home_UI5.0_AI2MAX_v1.22.0_vc1242_r23331_foxconn_20231011.apk | |
| 2023-10-11 19:31 | (SW) Jerry Lin | Note Added: 0014268 | |
| 2023-10-20 08:35 | (ALTech) Wooshin Kang | Note Added: 0014354 | |
| 2023-10-20 08:35 | (ALTech) Wooshin Kang | File Added: auro_headroom.7z | |
| 2023-10-20 13:52 | (SW) Jerry Lin | Note Added: 0014359 | |
| 2023-10-23 16:06 | (SW) Jerry Lin | Note Added: 0014379 | |
| 2023-11-03 08:49 | (ALTech) Sangmin Choi | Note Added: 0014459 | |
| 2023-11-03 08:49 | (ALTech) Sangmin Choi | File Added: 0002-volume_table_change.diff | |
| 2023-11-03 08:49 | (ALTech) Sangmin Choi | File Added: 0001-volume_table_change.diff | |
| 2023-11-03 12:03 | (SW) Jerry Lin | Note Added: 0014463 | |
| 2023-11-07 09:30 | (ALTech) Wooshin Kang | Note Added: 0014483 | |
| 2023-11-07 09:30 | (ALTech) Wooshin Kang | File Added: auro_headroom_11:7.7z | |
| 2023-11-07 14:34 | (SW) Jerry Lin | Note Added: 0014487 | |
| 2023-11-13 09:45 | (ALTech) Sangmin Choi | Note Added: 0014511 | |
| 2023-11-13 09:45 | (ALTech) Sangmin Choi | File Added: 135759_c39a9af8.patch | |
| 2023-11-13 11:29 | (SW) Jerry Lin | Note Added: 0014513 | |
| 2023-11-14 09:02 | (ALTech) Wooshin Kang | Note Added: 0014523 | |
| 2023-11-14 09:58 | (SW) Jerry Lin | Note Added: 0014526 | |
| 2023-11-14 09:58 | (SW) Jerry Lin | File Added: CSMSKBSBLT-228.patch | |
| 2023-11-14 16:33 | (ALTech) SY Yoon | Note Added: 0014537 | |
| 2023-11-21 08:56 | (ALTech) Wooshin Kang | Note Added: 0014593 | |
| 2023-11-21 09:14 | (SW) Jerry Lin | Note Added: 0014594 | |
| 2023-11-27 15:28 | (ALTech) Sangmin Choi | Note Added: 0014633 | |
| 2023-11-27 15:28 | (ALTech) Sangmin Choi | File Added: BFX-UA300_19.540.22_test_BPM-18714.xml | |
| 2023-11-27 19:37 | (SW) Jerry Lin | Note Added: 0014637 | |
| 2023-11-29 16:13 | (ALTech) Sangmin Choi | Note Added: 0014651 | |
| 2023-11-29 16:13 | (ALTech) Sangmin Choi | File Added: zapping_test.diff | |
| 2023-12-11 11:29 |
|
Note Added: 0014698 | |
| 2023-12-18 15:48 | (ALTech) Sangmin Choi | Note Added: 0014762 | |
| 2023-12-18 15:48 | (ALTech) Sangmin Choi | File Added: debug_message_AudioStreamNonTunnelOut.diff | |
| 2023-12-19 09:52 |
|
Note Added: 0014766 | |
| 2023-12-19 09:52 | (SW) Jerry Lin | Note Added: 0014767 | |
| 2024-07-11 13:48 | (ALTech) Sangmin Choi | Assigned To | (SW) Jerry Lin => (ALTech) Sangmin Choi |
| 2024-07-11 13:48 | (ALTech) Sangmin Choi | Status | assigned => closed |